Mercurial > hg > octave-avbm
diff src/oct-parse.yy @ 10206:37a08e0ce2dc
support Matlab-style empty output/input arguments
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 27 Jan 2010 12:41:49 +0100 |
parents | 97ae300aa73a |
children | 76a880a588ce |
line wrap: on
line diff
--- a/src/oct-parse.yy +++ b/src/oct-parse.yy @@ -463,7 +463,7 @@ %type <tree_expression_type> matrix cell %type <tree_expression_type> primary_expr postfix_expr prefix_expr binary_expr %type <tree_expression_type> simple_expr colon_expr assign_expr expression -%type <tree_identifier_type> identifier fcn_name +%type <tree_identifier_type> identifier fcn_name magic_tilde %type <tree_identifier_type> superclass_identifier meta_identifier %type <octave_user_function_type> function1 function2 classdef1 %type <tree_index_expression_type> word_list_cmd @@ -755,15 +755,28 @@ } ; +magic_tilde : EXPR_NOT + { + $$ = new tree_black_hole (); + } + ; + arg_list : expression { $$ = new tree_argument_list ($1); } | magic_colon { $$ = new tree_argument_list ($1); } + | magic_tilde + { $$ = new tree_argument_list ($1); } | arg_list ',' magic_colon { $1->append ($3); $$ = $1; } + | arg_list ',' magic_tilde + { + $1->append ($3); + $$ = $1; + } | arg_list ',' expression { $1->append ($3); @@ -1005,6 +1018,10 @@ lexer_flags.looking_at_initializer_expression = false; $$ = new tree_decl_elt ($1, $4); } + | magic_tilde + { + $$ = new tree_decl_elt ($1); + } ; // ==================== @@ -2972,6 +2989,12 @@ char type) { tree_index_expression *retval = 0; + + if (args && args->has_magic_tilde ()) + { + yyerror ("invalid use of empty argument (~) in index expression"); + return retval; + } int l = expr->line (); int c = expr->column ();