Example #1
0
void Lexico::sigPalabra( void )
{
    setEstado( 0 );
    setPalabra( producirPalabra( cadena_ , & posicion ));
    analizar( palabra_ );
}
Example #2
0
static char * test_SSE()
{	
	shell->errn = 0;

// forma correcta
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';
    shell->args[2] = '1';
    shell->args[3] = '0';
    shell->args[4] = '0';

    shell->n_args = 5;
    analizar(shell);
    mu_assert("Forma correcta  \nNo deberia dar errores, pero si da", shell->errn == 251);
    printf("Forma correcta - OK\n");
    shell->errn = 0;
    restart(shell);

    // argumento mayor al permitido
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '9';
    shell->args[1] = ',';
    shell->args[2] = '4';

    shell->n_args = 3;
    analizar(shell);
    mu_assert("Argumento mayor al permitido  \nDeberia dar error 406 y no da", shell->errn == 406);
    printf("Argumento mayor al permitido - OK\n");
    shell->errn = 0;
    restart(shell);

// sin especificar frecuencia
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';

    shell->n_args = 1;
    analizar(shell);
    mu_assert("Sin especificar frecuencia  \nDeberia dar error 407 y no da", shell->errn == 407);
    printf("Sin especificar frecuencia - OK\n");
    shell->errn = 0;
    restart(shell);

// con coma y sin sgeundo argumento
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';

    shell->n_args = 2;
    analizar(shell);    
    mu_assert("Error de sintaxis  \ndeberia dar error 408 y no da", shell->errn == 408);
    printf("Error de sintaxis - OK\n");
    shell->errn = 0;
    restart(shell);

// demasiados argumentos
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';

    shell->n_args = 10;
    analizar(shell);
    mu_assert("Demasiados argumentos  \ndeberia dar error 407 y no da", shell->errn == 405);
    printf("Demasiados argumentos - OK\n");
    shell->errn = 0;
    restart(shell);

// argumento fuera de rango
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';
    shell->args[2] = 'r';
    shell->args[3] = '8';
    shell->args[4] = '8';

    shell->n_args = 5;
    analizar(shell);
    mu_assert("Argumento fuera de rango 1  \ndeberia dar error 406 y no da", shell->errn == 406);
    printf("Argumento fuera de rango 1 - OK\n");
    shell->errn = 0;
    restart(shell);

// argumento fuera de rango
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';
    shell->args[2] = '8';
    shell->args[3] = 'r';
    shell->args[4] = '8';

    shell->n_args = 5;
    analizar(shell);
    mu_assert("Argumento fuera de rango 2  \ndeberia dar error 406 y no da", shell->errn == 406);
    printf("Argumento fuera de rango 2 - OK\n");
    shell->errn = 0;
    restart(shell);

// argumento fuera de rango
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';
    shell->args[2] = '8';
    shell->args[3] = '8';
    shell->args[4] = 'r';

    shell->n_args = 5;
    analizar(shell);
    mu_assert("Argumento fuera de rango 3  \ndeberia dar error 406 y no da", shell->errn == 406);
    printf("Argumento fuera de rango 3 - OK\n");
    shell->errn = 0;
    restart(shell);

// argumento fuera de rango
    shell->comando[0] = 'S';
    shell->comando[1] = 'S';
    shell->comando[2] = 'E';
    shell->args[0] = '4';
    shell->args[1] = ',';
    shell->args[2] = '8';
    shell->args[3] = '0';
    shell->args[4] = '0';

    shell->n_args = 5;
	analizar(shell);
    // printf("%d\n",(shell->args[2] - '0')*100 + (shell->args[3] - '0')*10 + shell->args[4] - '0');
    mu_assert("Argumento fuera de rango 4  \ndeberia dar error 406 y no da", shell->errn == 406);
    printf("Argumento fuera de rango 4 - OK\n");
    shell->errn = 0;
    restart(shell);

	return 0;
}
Example #3
0
File: ush.c Project: gerard/ushell
int main(int argc, char * argv[]) {
	char *linia;
	
	if(argc==3 && argv[1][0]=='-' && argv[1][1]=='c') {
		/*printf("Arguments\n");*/
		if(strlen(argv[2])>=MAXLINE) {
			printf("Excesivo número de carácteres\n");
			exit(1);
		}
		
		/* Ejecución de la orden */
		argv[2][strlen(argv[2])]='\n';
		argv[2][strlen(argv[2])+1]='\0';
		analizar(argv[2]);

		pipeline(num_ordenes(), fich_entrada(), fich_salida(), es_append(), es_background());
		ejecutar(num_ordenes(), num_argumentos(), get_ordenes(), get_argumentos(), es_background());
		
		exit(0);
	}

	if(argc!=1) {
		printf("Parámetros erróneos\nUSO: -c \"comando\"\n", argv[1]);
		exit(1);
	}

	getcwd(current, MAXLINE);
	
    fprintf(stdout, LOGO);
    while(1) {
		
		linia=getline();
		analizar(linia);
		
		/*printf("Analizadas %d ordenes\n", num_ordenes());*/

		struct sigaction senyal;
		char **ordres;
		
		sigemptyset(&senyal.sa_mask);
		senyal.sa_flags=0;
    	if(sigaction(SIGINT, NULL, &senyal)!=-1) {
			senyal.sa_handler=SIG_IGN;
			sigaction(SIGINT, &senyal, NULL);
			sigaction(SIGQUIT, &senyal, NULL);
			sigaction(SIGTTIN, &senyal, NULL);
			sigaction(SIGTTOU, &senyal, NULL);
		}
		
		ordres=get_ordenes();

		if(num_ordenes()==0) continue;

		if(!strcmp(ordres[0],"exit")) exit(0);
		
		if(!strcmp(ordres[0],"cd")) cdexec(get_argumentos(), num_argumentos(), current);
		else {
			pipeline(num_ordenes(), fich_entrada(), fich_salida(), es_append(), es_background());
			ejecutar(num_ordenes(), num_argumentos(), get_ordenes(), get_argumentos(), es_background());
			/*visualizar();*/
			/*printf("Command: %s", buffer); */
		}
	}
	return 0;
} /* main */
void uParser::TMaxParser::setInfija(string infija){
	analizar(infija);
	*aInfija = infija;
	*aPostfija = infijaToPosfija(infija);
}