www.pudn.com > SCIgen.rar > scigen.pl, change:2005-04-11,size:1638b


#!/usr/bin/perl 
 
# 
# simple context-free grammar expander 
# 
# $Id: scigen.pl,v 1.16 2005/04/11 15:29:00 strib Exp $ 
# 
 
#    This file is part of SCIgen. 
# 
#    SCIgen is free software; you can redistribute it and/or modify 
#    it under the terms of the GNU General Public License as published by 
#    the Free Software Foundation; either version 2 of the License, or 
#    (at your option) any later version. 
# 
#    SCIgen is distributed in the hope that it will be useful, 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#    GNU General Public License for more details. 
# 
#    You should have received a copy of the GNU General Public License 
#    along with SCIgen; if not, write to the Free Software 
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 
 
use IO::File; 
use strict; 
use scigen; 
 
# main 
my $dat = {} ; 
my $fh; 
my $filename; 
my $start = "START"; 
my $debug = 0; 
my $pretty = 1; 
my $RE; 
 
use Getopt::Long; 
 
# parse args 
my $result = GetOptions ("filename=s" => \$filename, 
			 "start=s"    => \$start, 
			 "pretty=i"    => \$pretty, 
			 "debug=i"    => \$debug ); 
 
if ( $filename ) { 
    $fh = new IO::File ("<$filename"); 
    die "cannot open input file: $filename\n" unless $fh; 
} else { 
    $filename = "STDIN"; 
    $fh = \*STDIN; 
} 
 
foreach my $arg (@ARGV) { 
    my ($n,$v) = split /=/, $arg; 
    push @{$dat->{$n}}, $v; 
} 
 
# run 
scigen::read_rules ($fh, $dat, \$RE, $debug); 
print scigen::generate ($dat, $start, $RE, $debug, $pretty) . "\n";