Example #1
0
int main(int argc, char** argv)
{
	if (argc<3)
	{
		cout << "Not enough arguments. You must provide a valid infile." << endl;
		return 0;
	}

	ofstream out;
  out.open(argv[2]);
	Scanner* s = new Scanner();
	try
	{
 		s->scan(argv[1]);
		print_toks(s->toks,out);
		out << "Total Tokens = " << s->toks.size() << endl;
  	out.close();
		delete s;
	}
	catch (exception& e)
	{
		print_toks(s->toks, out);
		// cout << e.what();
		out << e.what();
		out.close();
		delete s;
	}
}
Example #2
0
int main(int argc, char *argv[]) {
  if (argc != 4) {
    printf ("USAGE: %s command index file\n", argv[0]);
    exit (1);
  }

  char *cmd = argv[1];
  enum mode_t mode = MODE_NONE;
  if (strcmp (cmd, "rename-toks") == 0) {
    mode = MODE_RENAME;
  } else if (strcmp (cmd, "print") == 0) {
    mode = MODE_PRINT;
  } else if (strcmp (cmd, "delete-string") == 0) {
    mode = MODE_DELETE_STRING;
  } else if (strcmp (cmd, "shorten-string") == 0) {
    mode = MODE_SHORTEN_STRING;
  } else if (strcmp (cmd, "x-string") == 0) {
    mode = MODE_X_STRING;
  } else if (strcmp (cmd, "shorten-int") == 0) {
    mode = MODE_SHORTEN_INT;
  } else if (strcmp (cmd, "remove-asm-comment") == 0) {
    mode = MODE_REMOVE_ASM_COMMENT;
  } else if (strcmp (cmd, "remove-asm-line") == 0) {
    mode = MODE_REMOVE_ASM_LINE;
  } else if (strcmp (cmd, "collapse-toks") == 0) {
    mode = MODE_COLLAPSE_TOKS;
  } else if (strncmp (cmd, "reverse-", 8) == 0) {
    mode = MODE_REVERSE_TOKS;
    int res = sscanf (&cmd[8], "%d", &n_toks);
    assert (res==1);
    assert (n_toks > 0 && n_toks <= 1000);
  } else if (strncmp (cmd, "rm-toks-", 8) == 0) {
    mode = MODE_RM_TOKS;
    int res = sscanf (&cmd[8], "%d", &n_toks);
    assert (res==1);
    assert (n_toks > 0 && n_toks <= 1000);
  } else if (strncmp (cmd, "rm-tok-pattern-", 15) == 0) {
    mode = MODE_RM_TOK_PATTERN;
    int res = sscanf (&cmd[15], "%d", &n_toks);
    assert (res==1);
    assert (n_toks > 1 && n_toks <= 8);
  } else {
    printf ("error: unknown mode '%s'\n", cmd);
    exit (50);
  }

  int tok_index;
  int ret = sscanf (argv[2], "%d", &tok_index);
  assert (ret==1);
  // printf ("file = '%s'\n", argv[3]);
  FILE *in = fopen (argv[3], "r");
  assert (in);
  yyin = in;

  max_toks = initial_length;
  tok_list = (struct tok_t *) malloc (max_toks * sizeof (struct tok_t));
  assert (tok_list);

  yylex();

  // these calls all exit() at the end
  switch (mode) {
  case MODE_PRINT:
    print_toks ();
    assert (0);
  case MODE_RENAME:
    rename_toks (tok_index);
    assert (0);
  case MODE_DELETE_STRING:
    delete_string (tok_index);
    assert (0);
  case MODE_SHORTEN_STRING:
    shorten_string (tok_index);
    assert (0);
  case MODE_X_STRING:
    x_string (tok_index);
    assert (0);
  case MODE_SHORTEN_INT:
    shorten_int (tok_index);
    assert (0);
  case MODE_REMOVE_ASM_COMMENT:
    remove_asm_comment (tok_index);
    assert (0);
  case MODE_REMOVE_ASM_LINE:
    remove_asm_line (tok_index);
    assert (0);
  case MODE_COLLAPSE_TOKS:
    collapse_toks (tok_index);
    assert (0);
  case MODE_RM_TOKS:
    rm_toks (tok_index);
    assert (0);
  case MODE_REVERSE_TOKS:
    reverse_toks (tok_index);
    assert (0);
  case MODE_RM_TOK_PATTERN:
    rm_tok_pattern (tok_index);
    assert (0);
  default:
    assert (0);
  }
}