Ejemplo n.º 1
0
void
lr0(void)
{
    set_derives();
    set_nullable();
    generate_states();
}
Ejemplo n.º 2
0
int
main (int argc, char *argv[])
{
  program_name = argv[0];
#ifdef __LINUX__
  if (readlink ("/proc/self/exe", program_name_buf, 1024) != -1)
  {
    program_name=&program_name_buf;    
  }
#endif
  setlocale (LC_ALL, "");
  bindtextdomain (PACKAGE, LOCALEDIR);
  textdomain (PACKAGE);

  failure = 0;
  lineno = 0;


  getargs(argc, argv);
  openfiles();


  /* read the input.  Copy some parts of it to fguard, faction, ftable and fattrs.
     In file reader.c.
     The other parts are recorded in the grammar; see gram.h.  */
  reader();
  if (failure)
        done(failure);

  /* find useless nonterminals and productions and reduce the grammar.  In
     file reduce.c */
  reduce_grammar();

  /* record other info about the grammar.  In files derives and nullable.  */
  set_derives();
  set_nullable();

  /* convert to nondeterministic finite state machine.  In file LR0.
     See state.h for more info.  */
  generate_states();

  /* make it deterministic.  In file lalr.  */
  lalr();

  /* Find and record any conflicts: places where one token of lookahead is not
     enough to disambiguate the parsing.  In file conflicts.
     Also resolve s/r conflicts based on precedence declarations.  */
  initialize_conflicts();

  /* print information about results, if requested.  In file print. */
  if (verboseflag)
    verbose();
  else
    terse();

  /* output the tables and the parser to ftable.  In file output. */
  output();
  done(failure);
  return failure;
}
Ejemplo n.º 3
0
int main(int argc,char *argv[])
{
  failure = 0;
  lineno = 0;
  getargs(argc, argv);
  openfiles();

  /* read the input.  Copy some parts of it to fguard, faction, ftable and fattrs.
     In file reader.
     The other parts are recorded in the grammar; see gram.h.  */
  reader();

  /* record other info about the grammar.  In files derives and nullable.  */
  set_derives();
  set_nullable();

  /* convert to nondeterministic finite state machine.  In file LR0.
     See state.h for more info.  */
  generate_states();

  /* make it deterministic.  In file lalr.  */
  lalr();

  /* Find and record any conflicts: places where one token of lookahead is not
     enough to disambiguate the parsing.  In file conflicts.
     Currently this does not do anything to resolve them;
     the trivial form of conflict resolution that exists is done in output.  */
  initialize_conflicts();

  /* print information about results, if requested.  In file print. */
  if (verboseflag)
    verbose();
  else
    terse();

  /* output the tables and the parser to ftable.  In file output. */
  output();
  done(failure);
  return 0;
}
Ejemplo n.º 4
0
/*
 ****************************************************************
 *	Programa principal					*
 ****************************************************************
 */
void
main (int argc, const char *argv[])
{
  int opt;

  failure = 0;
  lineno = 0;

  verboseflag = 0;
  definesflag = 0;
  debugflag = 0;
  fixed_outfiles = 0;

	/*
	 *	Analisa as opções
	 */
	while ((opt = getopt (argc, argv, "b:dlo:p:tvVyH")) != EOF)
	{
		switch (opt)
		{
		    case 'b':			/* File prefix */
			spec_file_prefix = optarg;
			break;

		    case 'd':			/* Defines */
			definesflag = 1;
			break;

		    case 'l':			/* No lines */
			nolinesflag = 1;
			break;

		    case 'o':			/* Out file */
			spec_outfile = optarg;
			break;

		    case 'p':			/* Prefix */
			spec_name_prefix = optarg;
			break;

		    case 't':			/* Debug */
			debugflag = 1;
			break;

		    case 'v':			/* Verbose */
			verboseflag = 1;
			break;

		    case 'V':			/* Version */
			printf ("%s", version_string);
			break;

		    case 'y':			/* Fixed output files */
			fixed_outfiles = 1;
			break;

		    case 'H':			/* Help */
			help ();

		    default:			/* Erro */
			putc ('\n', stderr);
			help ();

		}	/* end switch */

	}	/* end while */

  if (optind == argc)
    {
      fprintf(stderr, "%s: no grammar file given\n", pgname);
      exit(1);
    }
  if (optind < argc - 1)
    fprintf(stderr, "%s: warning: extra arguments ignored\n", pgname);

  infile = argv[optind];

  openfiles ();

  /* read the input.  Copy some parts of it to fguard, faction, ftable and fattrs.
     In file reader.c.
     The other parts are recorded in the grammar; see gram.h.  */
  reader();

  /* find useless nonterminals and productions and reduce the grammar.  In
     file reduce.c */
  reduce_grammar();

  /* record other info about the grammar.  In files derives and nullable.  */
  set_derives();
  set_nullable();

  /* convert to nondeterministic finite state machine.  In file LR0.
     See state.h for more info.  */
  generate_states();

  /* make it deterministic.  In file lalr.  */
  lalr();

  /* Find and record any conflicts: places where one token of lookahead is not
     enough to disambiguate the parsing.  In file conflicts.
     Currently this does not do anything to resolve them;
     the trivial form of conflict resolution that exists is done in output.  */
  initialize_conflicts();

  /* print information about results, if requested.  In file print. */
  if (verboseflag)
    verbose();
  else
    terse();

  /* output the tables and the parser to ftable.  In file output. */
  output();
  done(failure);

}	/* end main */