Example #1
0
File: nfa.c Project: march1896/snev
nfa* nfa_star  (nfa* old) {
	atm_context* context = old->context;
	atm* fa = atm_create(context);
	atm_state *source, *dest;

	dbg_assert(ilist_size(old->accept_states) == 1);

	foreach_v(ilist_itr_begin(old->states), ilist_itr_end(old->states), add_state, fa);
	source = atm_state_create(fa);
	dest   = atm_state_create(fa);
	dbg_assert(source != NULL && dest != NULL);
	ilist_add_back(fa->states, source);
	ilist_add_back(fa->states, dest);

	fa->start_state = source;
	ilist_add_back(fa->accept_states, dest);

	atm_transform_create(fa, source, old->start_state, Epsilon);
	atm_transform_create(fa, source, dest, Epsilon);
	atm_transform_create(fa, (atm_state*)ilist_front(old->accept_states), dest, Epsilon);
	atm_transform_create(fa, (atm_state*)ilist_front(old->accept_states), old->start_state, Epsilon);

	ilist_clear(old->accept_states);
	ilist_clear(old->states);
	old->start_state = NULL;
	old->lifestate = atm_joined;

	fa->lifestate = atm_active;
	return fa;
}
Example #2
0
int main(int argc, char**argv)
{
    char user_input[1000];
    ATM *atm = atm_create();
    char *atmPath;
    FILE *atmFile;
    char *second;
    int filenamelen = 0;


    if(argc == 1) {
    printf("Usage: ATM <filename>\n");
    return 62; 
    } //user fails to provide exactly one argument

    second = argv[1];

    filenamelen = strlen(second);

    atmPath = malloc(1 + filenamelen + 4);

    strncpy(atmPath, second, strlen(second));

    atmPath[filenamelen] = '.';
    atmPath[filenamelen+1] = 'a';
    atmPath[filenamelen+2] = 't';
    atmPath[filenamelen+3] = 'm';
    atmPath[filenamelen+4] = 0;

    atmFile = fopen(atmPath, "r");

    if(atmFile == NULL){
    printf("Error opening atm initialization file\n");
    return 64;
    }

    fclose(atmFile);

    printf("%s", prompt);
    fflush(stdout);

    while (fgets(user_input, 10000,stdin) != NULL)
    {
        atm_process_command(atm, user_input);

        if(atm->currentUser != NULL) {
            printf("ATM (%s): ", atm->currentUser->name);
        }
        else {
            printf("%s", prompt);
        }
        
        fflush(stdout);
    }
	return EXIT_SUCCESS;
}
Example #3
0
int main(int arg, char **argv)
{
    char user_input[1000];
    if (arg != 2) {
        printf("Error opening atm initialization file\n");
        return 64;
    }
    char *token;
   char argv_cp[1024];
   strcpy(argv_cp, argv[1]);
   strtok(argv_cp, ".");
   token = strtok(NULL, ".");
   if (strcmp(token, "atm") != 0) {
    printf("Error opening atm initialization file\n");
    return 64;
   }

    ATM *atm = atm_create();
   
    //Check for command line arguements
     FILE *fp;
     fp = fopen(argv[1],"r");
    if(fp ==NULL) {
    	printf("Error opening atm initialization file\n");
	return 64;
    }
    strcpy(atm->symm_key, argv[1]);
    fclose(fp);
    printf("%s", prompt);
    fflush(stdout);

    while (fgets(user_input, 10000,stdin) != NULL)
    {
        atm_process_command(atm, user_input);
	if(atm->session == 1) {
		printf("ATM (%s): ",atm->username);	
	} else {
        printf("%s", prompt);
	}
        fflush(stdout);
    }   
	atm_free(atm);
	return EXIT_SUCCESS;
}
Example #4
0
int main(int argc, char *argv[])
{
    char user_input[1000];
    FILE *atm_file;

    if(argc != 2) {
      printf("Usage: atm <filename>\n");
      exit(62);
    }

    if(strncmp(argv[1]+strlen(argv[1])-4, ".atm", 4) != 0) {
      printf("Error opening ATM initialization file\n");
      exit(64);
    }

    atm_file = fopen(argv[1], "r");
    if(!atm_file) {
      printf("Error opening ATM initialization file\n");
      exit(64);
    }

    ATM *atm = atm_create();
    fread(atm->key, sizeof(char), BLOCK_SIZE, atm_file);
    fread(atm->iv, sizeof(char), BLOCK_SIZE, atm_file);

    printf("%s", prompt);
    fflush(stdout);

    while (fgets(user_input, 10000,stdin) != NULL)
    {
        if(strlen(user_input) > 0 && strcmp(user_input, "\n") == 0) continue;
        atm_process_command(atm, user_input);
        if(atm->session) {
          printf("ATM (<%s>): ", atm->cur_user);
        } else {
          printf("%s", prompt);
        }
        fflush(stdout);
    }
    atm_free(atm);

    return EXIT_SUCCESS;
}
Example #5
0
File: nfa.c Project: march1896/snev
nfa* nfa_union (nfa* first, nfa* second) {
	atm_context* context = first->context;
	atm* fa = atm_create(context);
	atm_state *source, *dest;

	dbg_assert(first->context == second->context);
	dbg_assert(ilist_size(first->accept_states) == 1);
	dbg_assert(ilist_size(second->accept_states) == 1);

	foreach_v(ilist_itr_begin(first->states), ilist_itr_end(first->states), add_state, fa);
	foreach_v(ilist_itr_begin(second->states), ilist_itr_end(second->states), add_state, fa);
	source = atm_state_create(fa);
	dest   = atm_state_create(fa);
	dbg_assert(source != NULL && dest != NULL);
	ilist_add_back(fa->states, source);
	ilist_add_back(fa->states, dest);

	fa->start_state = source;
	ilist_add_back(fa->accept_states, dest);

	atm_transform_create(fa, source, first->start_state, Epsilon);
	atm_transform_create(fa, source, second->start_state, Epsilon);
	atm_transform_create(fa, (atm_state*)ilist_front(first->accept_states), dest, Epsilon);
	atm_transform_create(fa, (atm_state*)ilist_front(second->accept_states), dest, Epsilon);

	ilist_clear(first->accept_states);
	ilist_clear(first->states);
	first->start_state = NULL;
	first->lifestate = atm_joined;

	ilist_clear(second->accept_states);
	ilist_clear(second->states);
	second->start_state = NULL;
	second->lifestate = atm_joined;

	fa->lifestate = atm_active;
	return fa;
}