home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
prgramer
/
bison
/
getargs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-07-01
|
4KB
|
155 lines
/* Parse command line arguments for bison,
Copyright (C) 1984, 1986, 1989 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison 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 1, or (at your option)
any later version.
Bison 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 Bison; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include "system.h"
#include "files.h"
int verboseflag;
int definesflag;
int debugflag;
int nolinesflag;
char *spec_name_prefix; /* For -a. */
char *spec_file_prefix; /* -b */
extern int fixed_outfiles;/* JF */
extern char *version_string;
extern int getopt();
extern void fatal();
void
getargs(argc, argv)
int argc;
char *argv[];
{
register int c;
char *p = argv[0];
char *lastcomponent;
extern int optind;
extern char *optarg;
verboseflag = 0;
definesflag = 0;
debugflag = 0;
fixed_outfiles = 0;
#if 0 /* Let's avoid dependence on what name invoked with.
The file `yacc' can be a shell script that runs `bison -y'. */
/* See if the program was invoked as "yacc". */
lastcomponent = p;
while (*p)
{
if (*p == '/')
lastcomponent = p + 1;
p++;
}
if (! strcmp (lastcomponent, "yacc"))
/* If so, pretend we have "-y" as argument. */
fixed_outfiles = 1;
#endif
if ( argc == 1 )
usage(argv[0]);
while ((c = getopt (argc, argv, "yvdlto:b:a:")) != EOF)
switch (c)
{
case 'y':
fixed_outfiles = 1;
break;
case 'v':
if(optind && argv[optind] && !strcmp(argv[optind],"-version")) {
printf("\n%s",version_string);
while(getopt(argc,argv,"ersion")!='n')
;
} else
verboseflag = 1;
break;
case 'd':
definesflag = 1;
break;
case 'l':
nolinesflag = 1;
break;
case 't':
debugflag = 1;
break;
case 'o':
spec_outfile = optarg;
break;
case 'b':
spec_file_prefix = optarg;
break;
case 'a':
spec_name_prefix = optarg;
break;
}
if (optind == argc)
fatal("grammar file not specified");
else
infile = argv[optind];
if (optind < argc - 1)
fprintf(stderr, "bison: warning: extra arguments ignored\n");
}
usage(name)
char *name;
{
printf("\n%s", version_string);
printf("\nUsage: %s [-dltvy] [-o file] file\n", name);
printf("\n -d Produce a .tab.h file, similar to yacc's y.tab.h file."
"\n -l Omit #line lines in the parser output file. Error mes-"
"\n sages from the C compiler will then be associated with"
"\n lines in the parser output file, instead of lines in"
"\n the original grammar file.");
printf("\n -t Turn on debugging. This option causes the bison output"
"\n to have debugging code made available via the C pre-"
"\n processor. The external variable yydebug should be"
"\n made non-zero to have the debugging code actually pro-"
"\n duce output.");
printf("\n -v Be verbose. Analogous to the same flag for yacc."
"\n -y Use fixed output file names. I.e., force the output to"
"\n be in files y.tab.c, y.tab.h, and so on. This is for"
"\n full yacc compatibility."
"\n -o file Define special output file name.\n");
exit(1);
}