comparison src/parse.y @ 4018:a8621d87fbf5

[project @ 2002-08-05 03:17:25 by jwe]
author jwe
date Mon, 05 Aug 2002 03:17:25 +0000
parents 27e461aed956
children ef3caf27cb9c
comparison
equal deleted inserted replaced
4017:0eb247b9cc9b 4018:a8621d87fbf5
371 octave_user_function *octave_user_function_type; 371 octave_user_function *octave_user_function_type;
372 } 372 }
373 373
374 // Tokens with line and column information. 374 // Tokens with line and column information.
375 %token <tok_val> '=' ':' '-' '+' '*' '/' 375 %token <tok_val> '=' ':' '-' '+' '*' '/'
376 %token <tok_val> ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ 376 %token <tok_val> ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ
377 %token <tok_val> EMUL_EQ EDIV_EQ ELEFTDIV_EQ AND_EQ OR_EQ 377 %token <tok_val> EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ AND_EQ OR_EQ
378 %token <tok_val> LSHIFT_EQ RSHIFT_EQ LSHIFT RSHIFT 378 %token <tok_val> LSHIFT_EQ RSHIFT_EQ LSHIFT RSHIFT
379 %token <tok_val> EXPR_AND_AND EXPR_OR_OR 379 %token <tok_val> EXPR_AND_AND EXPR_OR_OR
380 %token <tok_val> EXPR_AND EXPR_OR EXPR_NOT 380 %token <tok_val> EXPR_AND EXPR_OR EXPR_NOT
381 %token <tok_val> EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT 381 %token <tok_val> EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT
382 %token <tok_val> LEFTDIV EMUL EDIV ELEFTDIV EPLUS EMINUS 382 %token <tok_val> LEFTDIV EMUL EDIV ELEFTDIV EPLUS EMINUS
442 %type <subplot_style_type> style 442 %type <subplot_style_type> style
443 %type <subplot_axes_type> axes 443 %type <subplot_axes_type> axes
444 444
445 // Precedence and associativity. 445 // Precedence and associativity.
446 %left ';' ',' '\n' 446 %left ';' ',' '\n'
447 %right '=' ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ EMUL_EQ EDIV_EQ ELEFTDIV_EQ OR_EQ AND_EQ LSHIFT_EQ RSHIFT_EQ 447 %right '=' ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ OR_EQ AND_EQ LSHIFT_EQ RSHIFT_EQ
448 %left EXPR_AND_AND EXPR_OR_OR 448 %left EXPR_AND_AND EXPR_OR_OR
449 %left EXPR_AND EXPR_OR 449 %left EXPR_AND EXPR_OR
450 %left EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT 450 %left EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT
451 %left LSHIFT RSHIFT 451 %left LSHIFT RSHIFT
452 %left ':' 452 %left ':'
821 { $$ = make_assign_op (MUL_EQ, $1, $2, $3); } 821 { $$ = make_assign_op (MUL_EQ, $1, $2, $3); }
822 | assign_lhs DIV_EQ expression 822 | assign_lhs DIV_EQ expression
823 { $$ = make_assign_op (DIV_EQ, $1, $2, $3); } 823 { $$ = make_assign_op (DIV_EQ, $1, $2, $3); }
824 | assign_lhs LEFTDIV_EQ expression 824 | assign_lhs LEFTDIV_EQ expression
825 { $$ = make_assign_op (LEFTDIV_EQ, $1, $2, $3); } 825 { $$ = make_assign_op (LEFTDIV_EQ, $1, $2, $3); }
826 | assign_lhs POW_EQ expression
827 { $$ = make_assign_op (POW_EQ, $1, $2, $3); }
826 | assign_lhs LSHIFT_EQ expression 828 | assign_lhs LSHIFT_EQ expression
827 { $$ = make_assign_op (LSHIFT_EQ, $1, $2, $3); } 829 { $$ = make_assign_op (LSHIFT_EQ, $1, $2, $3); }
828 | assign_lhs RSHIFT_EQ expression 830 | assign_lhs RSHIFT_EQ expression
829 { $$ = make_assign_op (RSHIFT_EQ, $1, $2, $3); } 831 { $$ = make_assign_op (RSHIFT_EQ, $1, $2, $3); }
830 | assign_lhs EMUL_EQ expression 832 | assign_lhs EMUL_EQ expression
831 { $$ = make_assign_op (EMUL_EQ, $1, $2, $3); } 833 { $$ = make_assign_op (EMUL_EQ, $1, $2, $3); }
832 | assign_lhs EDIV_EQ expression 834 | assign_lhs EDIV_EQ expression
833 { $$ = make_assign_op (EDIV_EQ, $1, $2, $3); } 835 { $$ = make_assign_op (EDIV_EQ, $1, $2, $3); }
834 | assign_lhs ELEFTDIV_EQ expression 836 | assign_lhs ELEFTDIV_EQ expression
835 { $$ = make_assign_op (ELEFTDIV_EQ, $1, $2, $3); } 837 { $$ = make_assign_op (ELEFTDIV_EQ, $1, $2, $3); }
838 | assign_lhs EPOW_EQ expression
839 { $$ = make_assign_op (EPOW_EQ, $1, $2, $3); }
836 | assign_lhs AND_EQ expression 840 | assign_lhs AND_EQ expression
837 { $$ = make_assign_op (AND_EQ, $1, $2, $3); } 841 { $$ = make_assign_op (AND_EQ, $1, $2, $3); }
838 | assign_lhs OR_EQ expression 842 | assign_lhs OR_EQ expression
839 { $$ = make_assign_op (OR_EQ, $1, $2, $3); } 843 { $$ = make_assign_op (OR_EQ, $1, $2, $3); }
840 ; 844 ;
2382 2386
2383 case LEFTDIV_EQ: 2387 case LEFTDIV_EQ:
2384 t = octave_value::op_ldiv_eq; 2388 t = octave_value::op_ldiv_eq;
2385 break; 2389 break;
2386 2390
2391 case POW_EQ:
2392 t = octave_value::op_pow_eq;
2393 break;
2394
2387 case LSHIFT_EQ: 2395 case LSHIFT_EQ:
2388 t = octave_value::op_lshift_eq; 2396 t = octave_value::op_lshift_eq;
2389 break; 2397 break;
2390 2398
2391 case RSHIFT_EQ: 2399 case RSHIFT_EQ:
2400 t = octave_value::op_el_div_eq; 2408 t = octave_value::op_el_div_eq;
2401 break; 2409 break;
2402 2410
2403 case ELEFTDIV_EQ: 2411 case ELEFTDIV_EQ:
2404 t = octave_value::op_el_ldiv_eq; 2412 t = octave_value::op_el_ldiv_eq;
2413 break;
2414
2415 case EPOW_EQ:
2416 t = octave_value::op_el_pow_eq;
2405 break; 2417 break;
2406 2418
2407 case AND_EQ: 2419 case AND_EQ:
2408 t = octave_value::op_el_and_eq; 2420 t = octave_value::op_el_and_eq;
2409 break; 2421 break;