Branch: Tag:

2002-10-11

2002-10-11 13:39:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

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*/;      %%