@ -372,7 +372,7 @@ enum valtype {
} ;
# ifdef STANDALONE
void ast_log ( int level , const char * file , int line , const char * function , const char * fmt , . . . ) __attribute__ ( ( format ( printf , 5 , 6 ) ) ) ;
void ast_log ( int level , const char * file , int line , const char * function , const char * fmt , . . . ) __attribute__ ( ( format ( printf , 5 , 6 ) ) ) ;
# endif
struct val {
@ -485,13 +485,13 @@ int ast_yyerror(const char *,YYLTYPE *, struct parse_io *);
# if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
# line 34 2 "ast_expr2.y"
# line 34 4 "ast_expr2.y"
{
struct val * val ;
struct expr_node * arglist ;
}
/* Line 187 of yacc.c. */
# line 49 3 "ast_expr2.c"
# line 49 5 "ast_expr2.c"
YYSTYPE ;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@ -513,13 +513,13 @@ typedef struct YYLTYPE
/* Copy the second part of user declarations. */
# line 34 7 "ast_expr2.y"
# line 34 9 "ast_expr2.y"
extern int ast_yylex __P ( ( YYSTYPE * , YYLTYPE * , yyscan_t ) ) ;
/* Line 216 of yacc.c. */
# line 52 1 "ast_expr2.c"
# line 52 3 "ast_expr2.c"
# ifdef short
# undef short
@ -743,7 +743,7 @@ union yyalloc
/* YYNNTS -- Number of nonterminals. */
# define YYNNTS 4
/* YYNRULES -- Number of rules. */
# define YYNRULES 2 7
# define YYNRULES 2 8
/* YYNRULES -- Number of states. */
# define YYNSTATES 54
@ -793,32 +793,33 @@ static const yytype_uint8 yytranslate[] =
YYRHS . */
static const yytype_uint8 yyprhs [ ] =
{
0 , 0 , 3 , 5 , 6 , 8 , 12 , 1 7, 19 , 23 ,
2 7, 31 , 35 , 39 , 43 , 47 , 51 , 55 , 59 , 63 ,
66 , 69 , 7 3, 77 , 81 , 85 , 89 , 95
0 , 0 , 3 , 5 , 6 , 8 , 12 , 1 5, 20 , 22 ,
2 6, 30 , 34 , 38 , 42 , 46 , 50 , 54 , 58 , 62 ,
66 , 69 , 7 2, 76 , 80 , 84 , 88 , 92 , 98
} ;
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs [ ] =
{
27 , 0 , - 1 , 29 , - 1 , - 1 , 29 , - 1 , 28 , 3 ,
29 , - 1 , 25 , 23 , 28 , 24 , - 1 , 25 , - 1 , 23 ,
29 , 24 , - 1 , 29 , 6 , 29 , - 1 , 29 , 7 , 29 ,
- 1 , 29 , 13 , 29 , - 1 , 29 , 12 , 29 , - 1 , 29 ,
11 , 29 , - 1 , 29 , 10 , 29 , - 1 , 29 , 9 , 29 ,
- 1 , 29 , 8 , 29 , - 1 , 29 , 15 , 29 , - 1 , 29 ,
14 , 29 , - 1 , 14 , 29 , - 1 , 19 , 29 , - 1 , 29 ,
18 , 29 , - 1 , 29 , 17 , 29 , - 1 , 29 , 16 , 29 ,
- 1 , 29 , 22 , 29 , - 1 , 29 , 21 , 29 , - 1 , 29 ,
5 , 29 , 4 , 29 , - 1 , 29 , 20 , 29 , - 1
29 , - 1 , 28 , 3 , - 1 , 25 , 23 , 28 , 24 , - 1 ,
25 , - 1 , 23 , 29 , 24 , - 1 , 29 , 6 , 29 , - 1 ,
29 , 7 , 29 , - 1 , 29 , 13 , 29 , - 1 , 29 , 12 ,
29 , - 1 , 29 , 11 , 29 , - 1 , 29 , 10 , 29 , - 1 ,
29 , 9 , 29 , - 1 , 29 , 8 , 29 , - 1 , 29 , 15 ,
29 , - 1 , 29 , 14 , 29 , - 1 , 14 , 29 , - 1 , 19 ,
29 , - 1 , 29 , 18 , 29 , - 1 , 29 , 17 , 29 , - 1 ,
29 , 16 , 29 , - 1 , 29 , 22 , 29 , - 1 , 29 , 21 ,
29 , - 1 , 29 , 5 , 29 , 4 , 29 , - 1 , 29 , 20 ,
29 , - 1
} ;
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline [ ] =
{
0 , 37 1, 371 , 379 , 386 , 387 , 396 , 402 , 403 , 407 ,
41 1, 41 5, 419 , 423 , 427 , 431 , 435 , 439 , 443 , 447 ,
45 1, 45 5, 459 , 463 , 467 , 471 , 475 , 4 80
0 , 37 3, 373 , 381 , 388 , 389 , 395 , 404 , 410 , 411 ,
41 5, 419 , 423 , 427 , 431 , 435 , 439 , 443 , 447 , 451 ,
45 5, 459 , 463 , 467 , 471 , 475 , 4 79, 483 , 488
} ;
# endif
@ -849,17 +850,17 @@ static const yytype_uint16 yytoknum[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1 [ ] =
{
0 , 26 , 27 , 27 , 28 , 28 , 2 9 , 29 , 29 , 29 ,
0 , 26 , 27 , 27 , 28 , 28 , 2 8 , 29 , 29 , 29 ,
29 , 29 , 29 , 29 , 29 , 29 , 29 , 29 , 29 , 29 ,
29 , 29 , 29 , 29 , 29 , 29 , 29 , 29
29 , 29 , 29 , 29 , 29 , 29 , 29 , 29 , 29
} ;
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2 [ ] =
{
0 , 2 , 1 , 0 , 1 , 3 , 4, 1 , 3 , 3 ,
3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 2 ,
2 , 3, 3 , 3 , 3 , 3 , 5 , 3
0 , 2 , 1 , 0 , 1 , 3 , 2, 4, 1 , 3 ,
3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 ,
2 , 2, 3, 3 , 3 , 3 , 3 , 5 , 3
} ;
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@ -867,12 +868,12 @@ static const yytype_uint8 yyr2[] =
means the default is an error . */
static const yytype_uint8 yydefact [ ] =
{
3 , 0 , 0 , 0 , 7, 0 , 2 , 19 , 20 , 0 ,
3 , 0 , 0 , 0 , 8, 0 , 2 , 20 , 21 , 0 ,
0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 8 ,
0 , 4 , 0 , 9 , 10 , 16 , 15 , 14 , 13 , 12 ,
1 1, 18 , 17 , 23 , 22 , 21 , 27 , 25 , 24 , 0 ,
6, 0 , 5 , 26
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 9 ,
0 , 4 , 0 , 10 , 11 , 17 , 16 , 15 , 14 , 13 ,
1 2, 19 , 18 , 24 , 23 , 22 , 28 , 26 , 25 , 6 ,
7, 0 , 5 , 27
} ;
/* YYDEFGOTO[NTERM-NUM]. */
@ -1471,119 +1472,119 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
switch ( yytype )
{
case 4 : /* "TOK_COLONCOLON" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 147 5 "ast_expr2.c"
# line 147 8 "ast_expr2.c"
break ;
case 5 : /* "TOK_COND" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 148 0 "ast_expr2.c"
# line 148 3 "ast_expr2.c"
break ;
case 6 : /* "TOK_OR" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 148 5 "ast_expr2.c"
# line 148 8 "ast_expr2.c"
break ;
case 7 : /* "TOK_AND" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 149 0 "ast_expr2.c"
# line 149 3 "ast_expr2.c"
break ;
case 8 : /* "TOK_NE" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 149 5 "ast_expr2.c"
# line 149 8 "ast_expr2.c"
break ;
case 9 : /* "TOK_LE" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 150 0 "ast_expr2.c"
# line 150 3 "ast_expr2.c"
break ;
case 10 : /* "TOK_GE" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 150 5 "ast_expr2.c"
# line 150 8 "ast_expr2.c"
break ;
case 11 : /* "TOK_LT" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 151 0 "ast_expr2.c"
# line 151 3 "ast_expr2.c"
break ;
case 12 : /* "TOK_GT" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 151 5 "ast_expr2.c"
# line 151 8 "ast_expr2.c"
break ;
case 13 : /* "TOK_EQ" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 152 0 "ast_expr2.c"
# line 152 3 "ast_expr2.c"
break ;
case 14 : /* "TOK_MINUS" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 152 5 "ast_expr2.c"
# line 152 8 "ast_expr2.c"
break ;
case 15 : /* "TOK_PLUS" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 153 0 "ast_expr2.c"
# line 153 3 "ast_expr2.c"
break ;
case 16 : /* "TOK_MOD" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 153 5 "ast_expr2.c"
# line 153 8 "ast_expr2.c"
break ;
case 17 : /* "TOK_DIV" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 154 0 "ast_expr2.c"
# line 154 3 "ast_expr2.c"
break ;
case 18 : /* "TOK_MULT" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 154 5 "ast_expr2.c"
# line 154 8 "ast_expr2.c"
break ;
case 19 : /* "TOK_COMPL" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 155 0 "ast_expr2.c"
# line 155 3 "ast_expr2.c"
break ;
case 20 : /* "TOK_TILDETILDE" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 155 5 "ast_expr2.c"
# line 155 8 "ast_expr2.c"
break ;
case 21 : /* "TOK_EQTILDE" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 156 0 "ast_expr2.c"
# line 156 3 "ast_expr2.c"
break ;
case 22 : /* "TOK_COLON" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 156 5 "ast_expr2.c"
# line 156 8 "ast_expr2.c"
break ;
case 23 : /* "TOK_LP" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 157 0 "ast_expr2.c"
# line 157 3 "ast_expr2.c"
break ;
case 24 : /* "TOK_RP" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 157 5 "ast_expr2.c"
# line 157 8 "ast_expr2.c"
break ;
case 25 : /* "TOKEN" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 158 0 "ast_expr2.c"
# line 158 3 "ast_expr2.c"
break ;
case 29 : /* "expr" */
# line 36 5 "ast_expr2.y"
# line 36 7 "ast_expr2.y"
{ free_value ( ( yyvaluep - > val ) ) ; } ;
# line 158 5 "ast_expr2.c"
# line 158 8 "ast_expr2.c"
break ;
default :
@ -1906,7 +1907,7 @@ yyreduce:
switch ( yyn )
{
case 2 :
# line 37 1 "ast_expr2.y"
# line 37 3 "ast_expr2.y"
{ ( ( struct parse_io * ) parseio ) - > val = ( struct val * ) calloc ( sizeof ( struct val ) , 1 ) ;
( ( struct parse_io * ) parseio ) - > val - > type = ( yyvsp [ ( 1 ) - ( 1 ) ] . val ) - > type ;
if ( ( yyvsp [ ( 1 ) - ( 1 ) ] . val ) - > type = = AST_EXPR_number )
@ -1918,7 +1919,7 @@ yyreduce:
break ;
case 3 :
# line 3 79 "ast_expr2.y"
# line 3 81 "ast_expr2.y"
{ /* nothing */ ( ( struct parse_io * ) parseio ) - > val = ( struct val * ) calloc ( sizeof ( struct val ) , 1 ) ;
( ( struct parse_io * ) parseio ) - > val - > type = AST_EXPR_string ;
( ( struct parse_io * ) parseio ) - > val - > u . s = strdup ( " " ) ;
@ -1926,12 +1927,12 @@ yyreduce:
break ;
case 4 :
# line 38 6 "ast_expr2.y"
# line 38 8 "ast_expr2.y"
{ ( yyval . arglist ) = alloc_expr_node ( AST_EXPR_NODE_VAL ) ; ( yyval . arglist ) - > val = ( yyvsp [ ( 1 ) - ( 1 ) ] . val ) ; ; }
break ;
case 5 :
# line 38 7 "ast_expr2.y"
# line 38 9 "ast_expr2.y"
{ struct expr_node * x = alloc_expr_node ( AST_EXPR_NODE_VAL ) ;
struct expr_node * t ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
@ -1941,7 +1942,17 @@ yyreduce:
break ;
case 6 :
# line 396 "ast_expr2.y"
# line 395 "ast_expr2.y"
{ struct expr_node * x = alloc_expr_node ( AST_EXPR_NODE_VAL ) ;
struct expr_node * t ; /* NULL args should OK */
DESTROY ( ( yyvsp [ ( 2 ) - ( 2 ) ] . val ) ) ;
for ( t = ( yyvsp [ ( 1 ) - ( 2 ) ] . arglist ) ; t - > right ; t = t - > right )
;
( yyval . arglist ) = ( yyvsp [ ( 1 ) - ( 2 ) ] . arglist ) ; t - > right = x ; x - > val = make_str ( " " ) ; ; }
break ;
case 7 :
# line 404 "ast_expr2.y"
{ ( yyval . val ) = op_func ( ( yyvsp [ ( 1 ) - ( 4 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 4 ) ] . arglist ) , ( ( struct parse_io * ) parseio ) - > chan ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 4 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 4 ) - ( 4 ) ] . val ) ) ;
@ -1950,157 +1961,157 @@ yyreduce:
; }
break ;
case 7 :
# line 4 02 "ast_expr2.y"
case 8 :
# line 4 1 0 "ast_expr2.y"
{ ( yyval . val ) = ( yyvsp [ ( 1 ) - ( 1 ) ] . val ) ; ; }
break ;
case 8 :
# line 4 03 "ast_expr2.y"
case 9 :
# line 4 11 "ast_expr2.y"
{ ( yyval . val ) = ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ;
DESTROY ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) ) ; DESTROY ( ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ; ; }
break ;
case 9 :
# line 4 07 "ast_expr2.y"
case 10 :
# line 4 15 "ast_expr2.y"
{ ( yyval . val ) = op_or ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 0 :
# line 41 1 "ast_expr2.y"
case 1 1 :
# line 41 9 "ast_expr2.y"
{ ( yyval . val ) = op_and ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 1 :
# line 4 15 "ast_expr2.y"
case 1 2 :
# line 4 23 "ast_expr2.y"
{ ( yyval . val ) = op_eq ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 2 :
# line 4 19 "ast_expr2.y"
case 1 3 :
# line 4 27 "ast_expr2.y"
{ ( yyval . val ) = op_gt ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 3 :
# line 4 2 3 "ast_expr2.y"
case 1 4 :
# line 4 31 "ast_expr2.y"
{ ( yyval . val ) = op_lt ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 4 :
# line 4 27 "ast_expr2.y"
case 1 5 :
# line 4 35 "ast_expr2.y"
{ ( yyval . val ) = op_ge ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 5 :
# line 43 1 "ast_expr2.y"
case 1 6 :
# line 43 9 "ast_expr2.y"
{ ( yyval . val ) = op_le ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 6 :
# line 4 35 "ast_expr2.y"
case 1 7 :
# line 4 4 3 "ast_expr2.y"
{ ( yyval . val ) = op_ne ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 7 :
# line 4 39 "ast_expr2.y"
case 1 8 :
# line 4 47 "ast_expr2.y"
{ ( yyval . val ) = op_plus ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 1 8 :
# line 4 43 "ast_expr2.y"
case 1 9 :
# line 4 51 "ast_expr2.y"
{ ( yyval . val ) = op_minus ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 19 :
# line 4 47 "ast_expr2.y"
case 20 :
# line 4 55 "ast_expr2.y"
{ ( yyval . val ) = op_negate ( ( yyvsp [ ( 2 ) - ( 2 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 1 ) - ( 2 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 2 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 2 ) - ( 2 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 0 :
# line 45 1 "ast_expr2.y"
case 2 1 :
# line 45 9 "ast_expr2.y"
{ ( yyval . val ) = op_compl ( ( yyvsp [ ( 2 ) - ( 2 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 1 ) - ( 2 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 2 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 2 ) - ( 2 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 1 :
# line 4 55 "ast_expr2.y"
case 2 2 :
# line 4 63 "ast_expr2.y"
{ ( yyval . val ) = op_times ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 2 :
# line 4 59 "ast_expr2.y"
case 2 3 :
# line 4 67 "ast_expr2.y"
{ ( yyval . val ) = op_div ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 3 :
# line 4 63 "ast_expr2.y"
case 2 4 :
# line 4 71 "ast_expr2.y"
{ ( yyval . val ) = op_rem ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 4 :
# line 4 6 7 "ast_expr2.y"
case 2 5 :
# line 4 75 "ast_expr2.y"
{ ( yyval . val ) = op_colon ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 5 :
# line 47 1 "ast_expr2.y"
case 2 6 :
# line 47 9 "ast_expr2.y"
{ ( yyval . val ) = op_eqtilde ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 6 :
# line 4 75 "ast_expr2.y"
case 2 7 :
# line 4 83 "ast_expr2.y"
{ ( yyval . val ) = op_cond ( ( yyvsp [ ( 1 ) - ( 5 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 5 ) ] . val ) , ( yyvsp [ ( 5 ) - ( 5 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 5 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 4 ) - ( 5 ) ] . val ) ) ;
@ -2108,8 +2119,8 @@ yyreduce:
( yyloc ) . first_line = 0 ; ( yyloc ) . last_line = 0 ; ; }
break ;
case 2 7 :
# line 48 0 "ast_expr2.y"
case 2 8 :
# line 48 8 "ast_expr2.y"
{ ( yyval . val ) = op_tildetilde ( ( yyvsp [ ( 1 ) - ( 3 ) ] . val ) , ( yyvsp [ ( 3 ) - ( 3 ) ] . val ) ) ;
DESTROY ( ( yyvsp [ ( 2 ) - ( 3 ) ] . val ) ) ;
( yyloc ) . first_column = ( yylsp [ ( 1 ) - ( 3 ) ] ) . first_column ; ( yyloc ) . last_column = ( yylsp [ ( 3 ) - ( 3 ) ] ) . last_column ;
@ -2118,7 +2129,7 @@ yyreduce:
/* Line 1267 of yacc.c. */
# line 21 20 "ast_expr2.c"
# line 21 33 "ast_expr2.c"
default : break ;
}
YY_SYMBOL_PRINT ( " -> $$ = " , yyr1 [ yyn ] , & yyval , & yyloc ) ;
@ -2338,7 +2349,7 @@ yyreturn:
}
# line 4 86 "ast_expr2.y"
# line 4 94 "ast_expr2.y"
static struct expr_node * alloc_expr_node ( enum node_type nt )
@ -2556,7 +2567,7 @@ static char *compose_func_args(struct expr_node *arglist)
char numbuf [ 30 ] ;
if ( t ! = arglist )
strcat ( argbuf , " | " ) ;
strcat ( argbuf , " , " ) ;
if ( t - > val ) {
if ( t - > val - > type = = AST_EXPR_number ) {