pike.git/
src/
language.yacc
Branch:
Tag:
Non-build tags
All tags
No tags
2002-10-11
2002-10-11 13:39:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>
702ea5102a51c377280a8d0c5d4968d6277bfd50 (
59
lines) (+
37
/-
22
)
[
Show
|
Annotate
]
Branch:
7.9
Kludge to support Bison 1.50.
Rev: src/language.yacc:1.301
2:
|| This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: language.yacc,v 1.
300
2002/10/11
01
:39:
32
nilsson
Exp $
+
|| $Id: language.yacc,v 1.
301
2002/10/11
13
:39:
05
grubba
Exp $
*/ %pure_parser
113:
/* This is the grammar definition of Pike. */ #include "global.h"
-
RCSID("$Id: language.yacc,v 1.
300
2002/10/11
01
:39:
32
nilsson
Exp $");
+
RCSID("$Id: language.yacc,v 1.
301
2002/10/11
13
:39:
05
grubba
Exp $");
#ifdef HAVE_MEMORY_H #include <memory.h> #endif
1633:
$<number>1=Pike_compiler->num_used_modules; $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
1649:
{ unuse_modules(Pike_compiler->num_used_modules - $<number>1); pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
-
if (
$5
)
$5
->line_number = $<number>
4
;
-
$$=
$5
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
+
if (
$6
)
$6
->line_number = $<number>
5
;
+
$$=
$6
;
} ;
2592:
{ $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
2601:
{ int i=lex.current_line; lex.current_line=$1;
-
$$ = mknode('?',
$5
,
+
$$ = mknode('?',
$6
,
mknode(':',
-
mkcastnode(void_type_string,
$7
),
-
mkcastnode(void_type_string,
$8
)));
+
mkcastnode(void_type_string,
$8
),
+
mkcastnode(void_type_string,
$9
)));
$$ = mkcastnode(void_type_string, $$); lex.current_line = i; pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
} ;
2648:
{ $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
2655:
} '(' expr0 foreach_lvalues end_cond statement {
-
if (
$6
) {
+
if (
$7
) {
$$=mknode(F_FOREACH,
-
mknode(F_VAL_LVAL,
$5,
$6),
-
$8
);
+
mknode(F_VAL_LVAL,
$6
,
$7
),
+
$9
);
$$->line_number=$1; } else { /* Error in lvalue */
-
free_node(
$5
);
-
$$=
$8
;
+
free_node(
$6
);
+
$$=
$9
;
} pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
Pike_compiler->compiler_frame->opt_flags |= OPT_CUSTOM_LABELS; } ;
2703:
{ $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
2713:
{ int i=lex.current_line; lex.current_line=$1;
-
$$=mknode(F_COMMA_EXPR, mkcastnode(void_type_string,
$5
),
-
mknode(F_FOR,
$7
,mknode(':',
$11
,
$9
)));
+
$$=mknode(F_COMMA_EXPR, mkcastnode(void_type_string,
$6
),
+
mknode(F_FOR,
$8
,mknode(':',
$12
,
$10
)));
lex.current_line=i; pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
Pike_compiler->compiler_frame->opt_flags |= OPT_CUSTOM_LABELS; } ;
2727:
{ $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
2736:
{ int i=lex.current_line; lex.current_line=$1;
-
$$=mknode(F_FOR,
$5
,mknode(':',
$7
,NULL));
+
$$=mknode(F_FOR,
$6
,mknode(':',
$8
,NULL));
lex.current_line=i; pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
Pike_compiler->compiler_frame->opt_flags |= OPT_CUSTOM_LABELS; } ;
2752:
{ $<number>$=Pike_compiler->compiler_frame->current_number_of_locals; }
+
empty
{ /* Trick to store more than one number on compiler stack - Hubbe */ $<number>$=Pike_compiler->compiler_frame->last_block_level;
2759:
} '(' safe_comma_expr end_cond statement {
-
$$=mknode(F_SWITCH,
$5
,
$7
);
+
$$=mknode(F_SWITCH,
$6
,
$8
);
$$->line_number=$1; pop_local_variables($<number>2);
-
Pike_compiler->compiler_frame->last_block_level=$<number>
3
;
+
Pike_compiler->compiler_frame->last_block_level=$<number>
4
;
} ;
3754:
{ yyerror("if is a reserved word."); } ;
+
/*
+
* Kludge for bison 1.50.
+
*
+
* Bison 1.50 doesn't support having multiple action blocks
+
* in a sequence where a block refers to the value of its
+
* immediate predecessor.
+
*/
-
+
empty: /*empty*/;
%%