diff options
author | john haque <j.eh@mchsi.com> | 2012-02-26 06:57:48 -0600 |
---|---|---|
committer | john haque <j.eh@mchsi.com> | 2012-02-26 06:57:48 -0600 |
commit | 1c06c5c6f0f6d46f63977dd7407d86ccc2614226 (patch) | |
tree | 5763e51d36264e6f84a70e480d063b788c2f47cf /command.c | |
parent | cb17a712ea65f6510e0000374cce4efbf4ffb902 (diff) | |
download | egawk-1c06c5c6f0f6d46f63977dd7407d86ccc2614226.tar.gz egawk-1c06c5c6f0f6d46f63977dd7407d86ccc2614226.tar.bz2 egawk-1c06c5c6f0f6d46f63977dd7407d86ccc2614226.zip |
Finish MPFR changes and clean up code.
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 166 |
1 files changed, 86 insertions, 80 deletions
@@ -1713,7 +1713,7 @@ yyreduce: { case 3: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 109 "command.y" { cmd_idx = -1; @@ -1733,7 +1733,7 @@ yyreduce: case 5: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 128 "command.y" { if (errcount == 0 && cmd_idx >= 0) { @@ -1788,7 +1788,7 @@ yyreduce: case 6: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 178 "command.y" { yyerrok; @@ -1797,14 +1797,14 @@ yyreduce: case 22: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 212 "command.y" { want_nodeval = TRUE; } break; case 23: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 217 "command.y" { if (errcount == 0) { @@ -1824,7 +1824,7 @@ yyreduce: case 24: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 235 "command.y" { (yyval) = append_statement(arg_list, (char *) start_EVAL); @@ -1837,14 +1837,14 @@ yyreduce: case 25: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 242 "command.y" { (yyval) = append_statement((yyvsp[(1) - (2)]), lexptr_begin); } break; case 26: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 243 "command.y" { (yyval) = (yyvsp[(3) - (4)]); @@ -1853,7 +1853,7 @@ yyreduce: case 27: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 250 "command.y" { arg_list = append_statement((yyvsp[(2) - (3)]), (char *) end_EVAL); @@ -1874,7 +1874,7 @@ yyreduce: case 28: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 266 "command.y" { NODE *n; @@ -1890,7 +1890,7 @@ yyreduce: case 34: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 285 "command.y" { if (cmdtab[cmd_idx].class == D_FRAME @@ -1901,7 +1901,7 @@ yyreduce: case 35: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 291 "command.y" { int idx = find_argument((yyvsp[(2) - (2)])); @@ -1918,49 +1918,49 @@ yyreduce: case 38: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 304 "command.y" { want_nodeval = TRUE; } break; case 40: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 305 "command.y" { want_nodeval = TRUE; } break; case 46: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 310 "command.y" { want_nodeval = TRUE; } break; case 49: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 312 "command.y" { want_nodeval = TRUE; } break; case 51: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 313 "command.y" { want_nodeval = TRUE; } break; case 53: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 314 "command.y" { want_nodeval = TRUE; } break; case 57: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 318 "command.y" { if (in_cmd_src((yyvsp[(2) - (2)])->a_string)) @@ -1970,7 +1970,7 @@ yyreduce: case 58: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 323 "command.y" { if (! input_from_tty) @@ -1980,7 +1980,7 @@ yyreduce: case 59: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 328 "command.y" { int type = 0; @@ -2011,7 +2011,7 @@ yyreduce: case 60: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 354 "command.y" { if (! in_commands) @@ -2026,7 +2026,7 @@ yyreduce: case 61: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 364 "command.y" { if (! in_commands) @@ -2036,7 +2036,7 @@ yyreduce: case 62: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 369 "command.y" { int idx = find_argument((yyvsp[(2) - (2)])); @@ -2053,14 +2053,14 @@ yyreduce: case 63: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 380 "command.y" { want_nodeval = TRUE; } break; case 64: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 381 "command.y" { int type; @@ -2073,7 +2073,7 @@ yyreduce: case 65: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 389 "command.y" { if (in_commands) { @@ -2089,7 +2089,7 @@ yyreduce: case 66: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 403 "command.y" { if ((yyvsp[(1) - (1)]) != NULL) { @@ -2104,42 +2104,42 @@ yyreduce: case 68: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 417 "command.y" { (yyval) = NULL; } break; case 69: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 422 "command.y" { (yyval) = NULL; } break; case 74: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 431 "command.y" { (yyval) = NULL; } break; case 75: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 436 "command.y" { (yyval) = NULL; } break; case 77: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 439 "command.y" { (yyval) = NULL; } break; case 78: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 444 "command.y" { NODE *n; @@ -2151,14 +2151,14 @@ yyreduce: case 79: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 454 "command.y" { (yyval) = NULL; } break; case 80: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 456 "command.y" { if (find_option((yyvsp[(1) - (1)])->a_string) < 0) @@ -2168,7 +2168,7 @@ yyreduce: case 81: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 461 "command.y" { if (find_option((yyvsp[(1) - (3)])->a_string) < 0) @@ -2178,7 +2178,7 @@ yyreduce: case 82: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 469 "command.y" { NODE *n; @@ -2196,56 +2196,56 @@ yyreduce: case 83: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 485 "command.y" { (yyval) = NULL; } break; case 88: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 494 "command.y" { (yyval) = NULL; } break; case 89: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 495 "command.y" { want_nodeval = TRUE; } break; case 92: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 497 "command.y" { want_nodeval = TRUE; } break; case 95: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 503 "command.y" { (yyval) = NULL; } break; case 97: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 509 "command.y" { (yyval) = NULL; } break; case 99: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 515 "command.y" { (yyval) = NULL; } break; case 104: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 527 "command.y" { int idx = find_argument((yyvsp[(1) - (2)])); @@ -2262,7 +2262,7 @@ yyreduce: case 106: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 543 "command.y" { (yyvsp[(2) - (2)])->type = D_array; /* dump all items */ @@ -2272,7 +2272,7 @@ yyreduce: case 107: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 548 "command.y" { (yyvsp[(2) - (3)])->type = D_array; @@ -2282,21 +2282,21 @@ yyreduce: case 117: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 574 "command.y" { (yyval) = NULL; } break; case 118: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 576 "command.y" { (yyval) = NULL; } break; case 119: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 578 "command.y" { CMDARG *a; @@ -2308,7 +2308,7 @@ yyreduce: case 126: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 594 "command.y" { if ((yyvsp[(1) - (3)])->a_int > (yyvsp[(3) - (3)])->a_int) @@ -2322,28 +2322,28 @@ yyreduce: case 127: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 606 "command.y" { (yyval) = NULL; } break; case 134: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 620 "command.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 135: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 622 "command.y" { (yyval) = (yyvsp[(1) - (3)]); } break; case 137: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 628 "command.y" { CMDARG *a; @@ -2363,21 +2363,21 @@ yyreduce: case 139: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 647 "command.y" { (yyval) = (yyvsp[(1) - (1)]); num_dim = 1; } break; case 140: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 649 "command.y" { (yyval) = (yyvsp[(1) - (2)]); num_dim++; } break; case 142: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 655 "command.y" { NODE *n = (yyvsp[(2) - (2)])->a_node; @@ -2391,7 +2391,7 @@ yyreduce: case 143: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 664 "command.y" { /* a_string is array name, a_count is dimension count */ @@ -2403,14 +2403,14 @@ yyreduce: case 144: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 674 "command.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 145: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 676 "command.y" { NODE *n = (yyvsp[(2) - (2)])->a_node; @@ -2422,49 +2422,49 @@ yyreduce: case 146: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 683 "command.y" { NODE *n = (yyvsp[(2) - (2)])->a_node; if ((n->flags & NUMBER) == 0) yyerror(_("non-numeric value found, numeric expected")); else - (yyvsp[(2) - (2)])->a_node->numbr = - n->numbr; + negate_num(n); (yyval) = (yyvsp[(2) - (2)]); } break; case 147: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 695 "command.y" { (yyval) = NULL; } break; case 148: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 697 "command.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 149: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 702 "command.y" { (yyval) = NULL; } break; case 150: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 704 "command.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 151: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 709 "command.y" { if ((yyvsp[(1) - (1)])->a_int == 0) @@ -2475,7 +2475,7 @@ yyreduce: case 152: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 715 "command.y" { if ((yyvsp[(2) - (2)])->a_int == 0) @@ -2486,21 +2486,21 @@ yyreduce: case 153: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 724 "command.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 154: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 726 "command.y" { (yyval) = (yyvsp[(2) - (2)]); } break; case 155: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 728 "command.y" { (yyvsp[(2) - (2)])->a_int = - (yyvsp[(2) - (2)])->a_int; @@ -2510,7 +2510,7 @@ yyreduce: case 156: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 736 "command.y" { if (lexptr_begin != NULL) { @@ -2524,7 +2524,7 @@ yyreduce: -/* Line 1806 of yacc.c */ +/* Line 1821 of yacc.c */ #line 2541 "command.c" default: break; } @@ -3252,22 +3252,28 @@ err: return D_STRING; } - /* assert(want_nodval == TRUE); */ - /* look for awk number */ if (isdigit((unsigned char) tokstart[0])) { - double d; + NODE *r = NULL; errno = 0; - d = strtod(tokstart, &lexptr); +#ifdef HAVE_MPFR + if (do_mpfr) { + r = mpg_node(); + (void) mpfr_strtofr(r->mpg_numbr, tokstart, & lexptr, 0, RND_MODE); + } else +#endif + r = make_number(strtod(tokstart, & lexptr)); + if (errno != 0) { yyerror(strerror(errno)); + unref(r); errno = 0; return '\n'; } yylval = mk_cmdarg(D_node); - yylval->a_node = make_number(d); + yylval->a_node = r; append_cmdarg(yylval); return D_NODE; } |