1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-18 17:47:41 +02:00
2010-01-24 09:19:39 +00:00

57 lines
1.4 KiB
Perl

#!/usr/bin/perl
#
# $Id: fix-bison,v 1.2 2008-06-26 15:14:27 larsl Exp $
#
# Format output generated by bison
#
# Usage:
# bison -b brql_parser -p brql_parser_ -d -v brql_parser.y
# perl fix-bison brql_parser.tab.c > $tmp
# mv $tmp brql_parser.tab.c
#
# Copyright (C) 2004-2006, David Beckett http://purl.org/net/dajobe/
# Copyright (C) 2004, University of Bristol, UK http://www.bristol.ac.uk/
#
my $seen_yyerrlab1=0;
my $line_offset=1; # #line directives always refer to the NEXT line
while(<>) {
# Remove code that causes a warning
if(/Suppress GCC warning that yyerrlab1/) {
do {
$_=<>;
$line_offset--; # skipped a line
} while(!/^\#endif/);
$line_offset--; # skipped a line
next;
}
$seen_yyerrlab1=1 if /goto yyerrlab1/;
s/^yyerrlab1:// unless $seen_yyerrlab1;
# Do not use macro name for a temporary variable
s/unsigned int yylineno = /unsigned int yylineno_tmp = /;
s/yyrule - 1, yylineno\)/yyrule - 1, yylineno_tmp\)/;
# Do not (re)define prototypes that the system did better
if(m%^void \*malloc\s*\(%) {
$line_offset--; # skipped a line
next;
}
if(m%^void free\s*\(%) {
$line_offset--; # skipped a line
next;
}
# Suppress warnings about empty declarations
s/(^static int .*_init_globals.*);$/$1/;
# Fixup pending filename renaming, see above.
# Fix line numbers.
my $line=$. +$line_offset;
s/^(\#line) \d+ (.*)\.tab\.c/$1 $line $2.c/;
print;
}