home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.parl.clemson.edu
/
2015-02-07.ftp.parl.clemson.edu.tar
/
ftp.parl.clemson.edu
/
pub
/
coven
/
coven-utils-1.1.tgz
/
coven-utils-1.1.tar
/
utils
/
coven-module-parser
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
2003-01-28
|
2KB
|
122 lines
/*
* (C) 2001 Clemson University
*
* See COPYING in top-level directory.
*/
#include <stdio.h>
#include <getopt.h>
#include <module_lang.h>
#include <symbol.h>
static void initialize();
static void parse_args(int argc, char **argv);
static void finalize();
/*
* Global Variables
*/
extern FILE *yyin;
extern FILE *yyout;
int header_flag = 0;
int input_file_flag = 0;
int list_flag = 0;
int out_file_flag = 0;
FILE *out_file;
FILE *list_file;
int list_file_flag = 0;
int line = 1;
main(int argc, char **argv)
{
initialize();
parse_args(argc, argv);
yyparse();
finalize();
}
static void initialize()
{
sym_ent_p sym;
init_symbol_table();
sym = symenter("int", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("uint", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("string", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("float", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("double", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("char", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("uchar", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("short", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
sym = symenter("ushort", NULL, TYPE_TYPE);
sym->type = TYPE_TYPE;
}
static void parse_args(int argc, char **argv)
{
int c;
int digit_optind = 0;
while(1)
{
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
/* {"option_name", has_arg, *flag, val}, */
{"option_name", 0, NULL, 0},
{0, 0, 0, 0}
};
c = getopt_long ( argc, argv, "hli:o:", long_options, &option_index);
if (c == -1)
break;
switch (c) {
case 0 : /* a long option */
break;
case 'h' : /* head option */
header_flag = 1;
break;
case 'i' : /* use this input file instead of stdin */
input_file_flag = 1;
yyin = fopen(optarg, "r");
break;
case 'o' : /* set output file */
yyout = fopen(optarg,"w");
out_file_flag = 1;
break;
default:
fprintf(stderr,"%s: undefined option %c given\n", argv[0], c);
}
}
}
static void finalize()
{
}
yyerror(s)
{
fprintf(stderr,"syntax error line %d: %s\n", line, s);
exit(1);
}
void produce_listing(int line, char *listing)
{
/* fprintf(stderr, "produce_listing\n"); /* */
if (list_flag)
fprintf(list_file, "[%d]\t%s\n", line, listing);
}