aboutsummaryrefslogtreecommitdiffstats
path: root/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'command.c')
-rw-r--r--command.c166
1 files changed, 86 insertions, 80 deletions
diff --git a/command.c b/command.c
index 17ba0476..81c601d6 100644
--- a/command.c
+++ b/command.c
@@ -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;
}