1#! /usr/bin/perl 2# 3# This file is part of the WebKit project 4# 5# Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6# 7# This library is free software; you can redistribute it and/or 8# modify it under the terms of the GNU Library General Public 9# License as published by the Free Software Foundation; either 10# version 2 of the License, or (at your option) any later version. 11# 12# This library is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15# Library General Public License for more details. 16# 17# You should have received a copy of the GNU Library General Public License 18# along with this library; see the file COPYING.LIB. If not, write to 19# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20# Boston, MA 02110-1301, USA. 21use strict; 22use warnings; 23 24my $grammar = $ARGV[0]; 25my $fileBase = $ARGV[1]; 26 27system("bison -d -p cssyy " . $grammar . " -o " . $fileBase . ".tab.c"); 28 29open HEADER, ">" . $fileBase . ".h" or die; 30print HEADER << "EOF"; 31#ifndef CSSGRAMMAR_H 32#define CSSGRAMMAR_H 33EOF 34 35open HPP, "<" . $fileBase . ".tab.h" or die; 36while (<HPP>) { 37 print HEADER; 38} 39close HPP; 40 41print HEADER "#endif\n"; 42 43close HEADER; 44 45unlink($fileBase . ".tab.h"); 46 47open CPP, ">" . $fileBase . ".cpp" or die; 48open GENSRC, "<" . $fileBase . ".tab.c" or die; 49while (<GENSRC>) { 50 print CPP; 51} 52close GENSRC; 53close CPP; 54 55unlink($fileBase . ".tab.c"); 56