Autore |
Discussione |
battistis
Utente Nonno
Regione: Friuli-Venezia Giulia
Prov.: Verbano-Cusio-Ossola
Città: inCentroConPassAuto
|
Inserito il - 11/07/2004 : 10:07:47
|
giusto feeb! pensa che 3 anni fa la situazione era molto più complicata...linguaggi era ritenuto un esame difficile non tanto x la materia in se stessa ma per gli argomenti trattati nel laboratorio che sui manuali non li abbiamo mai trovati (progettaz, scanner, ecc..) xciò i compilatori erano quasi sempre uguali... |
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 10:17:41
|
Ciao, visto che sta iniziando una discussione interessante sui contenuti di linguaggi, ci spostiamo sul nuovo forum "Proposte per il corso di linguaggi di programm."?
In questo modo, questo form lo lasciamo solo per le domande degli studenti che stanno incontrando difficoltà o hanno dubbi, e nel nuovo forum vediamo se riusciamo a capire quali sono i problemi del corso e, spero, anche a risolverli per l'anno prossimo.
Grazie in anticipo
|
|
|
mauroste
Nuovo Utente
|
Inserito il - 11/07/2004 : 11:51:33
|
Professora la prego dia uno sguardo all'implementazione di questo analizzatore lessicale e mi dica come posso correggerlo,sto impazzendo,mi riporta 11 errori:
#include <stdio.h> #include <stdlib.h> #include <ctype.h>
#define falso 0 #define vero 1
/*variabili globali*/ char ch;/*contiene il carattere da controllare*/ int ch_col; /*nro di colonna*/ int flag;
FILE *filesource;
const int I_LENGTH=15, /* Massima lunghezza identificatore*/ S_LENGTH=80, /* Massima lunghezza della stringa */ MAX_I=32767; /*Lunghezza massima rappresentabile di un numero */
int EOLN_CODE='\0', /* Codice di fine linea */ EOF_CODE='\n';/* Codice di fine file */
int I_C=1, N_C=2, S_C=3, EOF_C=4; /* Categorie dei simboli */
int BEGIN_C=5, END_C=6, PROGRAM_C=7, VAR_C=8, INTEGER_C=9, REAL_C=10, BOOLEAN_C=11,WRITELN_C=12; int READLN_C=13, PROCEDURE_C=14, IF_C=15,THEN_C=16, ELSE_C=17,WHILE_C=18,DO_C=19, CHAR_C=35; int FUNCTION_C=36; /* Codici delle parole chiave */
int PLUS_C=20, MINUS_C=21 , GT_C=22, LT_C=23, ASSIGN_C=24,GE_C=25 ,LE_C=26 ; int SEMICOL_C=27, COMMA_C=28, DOT_C=29, COLON_C=30,PARL_C=31 , PARR_C=32; int EQUAL_C=33, NE_C=34, VIRGOLETTE=37; /* Codici degli operatori e dei separatori*/
/*Strutture dati*/
union VAL_CODICE {
char nome[16]; /*campo identificatore*/
int val_int; /*campo numero intero*/
char buffer_str[81];/*campo stringa*/ int S_L ;/*campo lunghezza della stringa*/ } ;
struct TOKEN {
int error_c;
int codice;
union VAL_CODICE val;
int col;
};
struct TOKEN sym;
/*tabella delle parole chiavi*/
struct keyt { char *word;
int codice;
} keytab[]={ {"BEGIN",5}, {"END", 6}, {"PROGRAM", 7}, {"VAR", 8}, {"INTEGER", 9}, {"REAL", 10 }, {"BOOLEAN",11}, {"WRITELN", 12}, {"READLN", 13}, {"PROCEDURE", 14}, {"IF", 15}, {"THEN", 16}, {"ELSE", 17}, {"WHILE", 18}, {"DO", 19}, {"CHAR", 35}, {"FUNCTION", 36} };
/*prototipi delle funzioni che compongono lo scanner*/
void ERRORE(int );
char readchar(void);
void IS_KEYWORD(struct TOKEN*, struct keyt[]);
void SCAN(struct TOKEN*);
void INIT_SCAN (void); /*Funione che dichiara gli errori*/
void ERRORE (int n)
{ flag=falso;
switch(n){ case 1: printf("ERROR!!!Identificatore troppo lungo\n\n"); break; case 2: printf("ERROR!!!Numero intero troppo grande\n\n");break; case 3: printf("ERROR!!!Fine file inattesa\n\n");break; case 4: printf("ERROR!!!Fine linea inattesa\n\n"); break; case 5: printf("ERROR!!!Carattere non ammesso\n\n"); break; case 6: printf("ERROR!!!Keyword 'program' mancante\n\n");break; case 7: printf("ERROR!!! Identificatore mancante\n\n"); break; case 8: printf("ERROR!!! Operatore ';' mancante\n\n"); break; case 9: printf("ERROR!!! Keyword 'begin' mancante\n\n"); break; case 10 : printf("ERROR!!! Keyword 'end' mancante\n\n"); break; case 11 : printf("ERROR!!! Operatore '.' mancante\n\n"); break; case 12: printf("ERROR!!! Operatore ','mancante\n\n"); break; case 13 : printf("ERROR!!! Operatore ':' mancante\n\n"); break; case 14: printf("ERROR!!! Tipo variabile mancante\n\n"); break; case 15 : printf("ERROR!!! Parentesi destra mancante\n\n");break; case 16 : printf("ERROR!!! Operatore '+' mancante\n\n"); break; case 17 : printf("ERROR!!! Parentesi sinistra mancante\n\n");break; case 18 : printf("ERROR!!! Condizione mancante\n\n"); break; case 19: printf("ERROR!!! Keyword 'then' mancante\n\n"); break; case 20 : printf("ERROR!!! Corpo mancante\n\n"); break; case 21 : printf("ERROR!!! Keyword 'do' mancante\n\n"); break; case 22 : printf("ERROR!!! Operatore ':=' mancante\n\n"); break; case 23 : printf("ERROR!!! Operatore di confronto mancante\n\n"); break; case 24 : printf("ERROR!!! Valore mancante\n\n"); break; case 25 : printf("ERROR!!! Operarore '=' mancante\n\n"); break; case 26 : printf("ERROR!!! Virgolette mancanti\n\n"); break;
/*fine switch*/ } /* fine funzione errore */
}
/* Funzione che fornisce il carattere successivo di una stringa nel programma */
char readchar(void) { char carattere;
carattere=getc(filesource);
return carattere;
}
/*Funzione ricerca keyword*/
void IS_KEYWORD(struct TOKEN *sym, struct keyt keytab[]) { int condizione;
int lower,upper,middle;
int keyword; int n=(sizeof keytab[0]); lower=0,upper=n-1;
keyword=falso;
while(lower<=upper){
middle=(lower+upper)/2;
if(condizione=strcmp(sym->val.nome,keytab[middle].word<0))
upper=middle-1;
else if(condizione>0)
lower=middle+1;
else { keyword=vero;
sym->codice=keytab[lower].codice;
} }
if(keyword) {
sym->codice=I_C; }
} /*fine procedura di ricerca*/
/* funzione scan */
void SCAN(struct TOKEN *sym)/* funzione scan */
{ const int A_S=0;/* Stato iniziale */ int C_S=1;/* Stato dei commenti */ int I_S=2;/* Stato identificatori */ int N_S=3;/* Stato numeri interi */ int S1_S=4;/* Stato delle stringhe */ int GT_S=6;/* Stato segno > */ int LT_S=7;/* Stato segno < */
/* variabili locali */ int S=A_S; int EXIT_FLAG=falso; int READ_FLAG=vero; int ERROR_FLAG=falso; int I,KEY;
/* corpo della funzione */ do switch(S) { case A_S:{ switch(ch) { case'{': S=C_S; break; case ' ': ;
case '\0' : break; case '\n' : { EXIT_FLAG=vero; sym->col=ch_col; sym->codice=EOF_C; break;}
case 'A' : case 'B' : case 'C' : case 'D' : case 'E' : case 'F' : case 'G' : case 'H' : case 'l' : case 'J' : case 'K' : case 'L' : case 'M': case 'N' : case 'O' : case 'P' : case 'Q' : case 'R' : case 'S' : case 'T' : case 'U' : case 'V' : case 'W' : case 'X' : case 'Y' : case 'Z' : { sym->col=ch_col; I=1; sym->val.nome[1]=ch; S=I_S; break; } case'0': case'1': case '2' : case '3': case '4' : case '5': case '6' : case '7': case'8': case'9': { sym->col=ch_col; sym->codice=N_C; sym->val.val_int=ch; S=N_S; break; } case '"' : { sym->col=ch_col; sym->val.S_L=0; S=S1_S; break; } case '+': {sym->col=ch_col; sym->codice=PLUS_C; EXIT_FLAG=vero; break; } case '>': {sym->col=ch_col; sym->codice=GT_C; S=GT_S; break; } case '<' : { sym->col=ch_col; sym->codice=LT_C; S=LT_S; break;}
case ':' : { sym->col=ch_col; sym->codice=COLON_C; break; } case ';' : { sym->col=ch_col; sym->codice=SEMICOL_C; break; }
case ',' : { sym->col=ch_col; sym->codice=COMMA_C; break; } case '.': { sym->col=ch_col; sym->codice=DOT_C; break; } case '(' : { sym->col=ch_col; sym->codice=PARL_C; break; } case ')' : { sym->col=ch_col; sym->codice=PARR_C; break; } case '-': { sym->col=ch_col; sym->codice=MINUS_C; break; } } }/* fine' switch A_S */ case C_S :{ switch(ch) { case '}': S=A_S; break; case '\n': ERRORE(4); EXIT_FLAG=vero; break;
default: ; } /* switch interno C_S*/ } case I_S: {
switch(ch) { case '0' : case '1' : case '2' : case '3': case '4' : case '5' : case '6' : case '7' : case '8' : case'9':
case 'A' : case 'B' : case 'C' : case 'D' : case 'E' : case 'F' : case 'G' : case 'H' : case 'l' : case 'J' : case 'K' : case 'L' : case 'M': case 'N' : case 'O' : case 'P' : case 'Q' : case 'R' : case 'S' : case 'T' : case 'U' : case 'V' : case 'W' : case 'X' : case 'Y' : case 'Z' : break;
default :READ_FLAG=falso;EXIT_FLAG=vero; } /* switch interno I_S*/
}
case N_S : { switch(ch) { case '0' : case '1' : case '2' : case '3': case '4' : case '5' : case '6' : case '7' : case '8' : case'9':{ if (!ERROR_FLAG) { sym->val.val_int=sym->val.val_int * 10+ ch; if(sym->val.val_int=MAX_I) { ERROR_FLAG=vero; ERRORE(2); sym->val.val_int=MAX_I; } } break;
} default : READ_FLAG=falso; EXIT_FLAG=vero; } /* fine switch N_S */ case S1_S : { switch(ch) { case '"': sym->codice=S_C; EXIT_FLAG=vero; break;
case '\0' : ERRORE(3); sym->codice=S_C; EXIT_FLAG=vero; break; case '\n': ERRORE(4); sym->codice=S_C; READ_FLAG=falso; EXIT_FLAG=vero; break;
default: sym->val.S_L= sym->val.S_L +1; sym->val.buffer_str[0]=ch; } } /* fine switch S1_S */
case GT_S : { switch(ch) { case '>=' : sym->codice=GE_C; EXIT_FLAG=vero; break; default: READ_FLAG=falso; EXIT_FLAG=vero; }
} /* fine switch GT_S */
case LT_S : { switch(ch) { case '<=' : sym->codice=LE_C; EXIT_FLAG=vero; break; case '<>' : sym->codice=NE_C; EXIT_FLAG=vero; break; default : READ_FLAG=falso; EXIT_FLAG=vero; } /* fine switch LT_S */ /* fine case esterno */
if (READ_FLAG) readchar(); } while (!EXIT_FLAG); /* Fine funzione scan */
/* Funzione INIT_SCAN */ } void INIT_SCAN() { if ((filesource = fopen("A:source.dat", "r")) == NULL ) printf("Il file non può essere aperto\n"); else { ch = readchar(); SCAN=(&sym); } /* fine funzione */
} /*fine scanner*/
|
|
|
Sinkler
Croce & Delizia
Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 11/07/2004 : 11:58:51
|
OH My God!!
mauroste non era meglio mettere un allegato???vabbè...
Citazione: Messaggio inserito da mauroste
Professora la prego dia....
hihhi...SF!!
|
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 13:09:40
|
Ciao Mauroste, prima di tutto risolviamo un problema grave...PROFESSORA?!?!?
Meriti di non avere risposta...non vedi che sinkler non aspetta altro per massacrarmi????
OK. detto questo, nel tuo programma c'erano i seguenti errori: 1. Mancava una documentazione minima 2. Mancava un minimo di indentazione 3. Mancava una graffa nella funzione scan 4. i case devono far riferiemnto a valori costanti non a variabili 5. Cosa è const? (trovata nella funzione scan) 6. se usi funzioni sulle stringhe, ricordati di includere il file string.h (come per il caso della strcmp che usi) 7. Attento a quando dichiari dati di tipo struct
Ti allego il file. Sono rimasti 2 warning da sistemare. Confrontalo con il tuo originale.
|
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 13:11:23
|
Ho dimenticato il file
______________________________________ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h>
#define falso 0 #define vero 1
/*variabili globali*/ char ch;/*contiene il carattere da controllare*/ int ch_col; /*nro di colonna*/ int flag;
FILE *filesource;
const int I_LENGTH=15, /* Massima lunghezza identificatore*/ S_LENGTH=80, /* Massima lunghezza della stringa */ MAX_I=32767; /*Lunghezza massima rappresentabile di un numero */
int EOLN_CODE='\0', /* Codice di fine linea */ EOF_CODE='\n';/* Codice di fine file */
int I_C=1, N_C=2, S_C=3, EOF_C=4; /* Categorie dei simboli */
int BEGIN_C=5, END_C=6, PROGRAM_C=7, VAR_C=8, INTEGER_C=9, REAL_C=10, BOOLEAN_C=11,WRITELN_C=12; int READLN_C=13, PROCEDURE_C=14, IF_C=15,THEN_C=16, ELSE_C=17,WHILE_C=18,DO_C=19, CHAR_C=35; int FUNCTION_C=36; /* Codici delle parole chiave */
int PLUS_C=20, MINUS_C=21 , GT_C=22, LT_C=23, ASSIGN_C=24,GE_C=25 ,LE_C=26 ; int SEMICOL_C=27, COMMA_C=28, DOT_C=29, COLON_C=30,PARL_C=31 , PARR_C=32; int EQUAL_C=33, NE_C=34, VIRGOLETTE=37; /* Codici degli operatori e dei separatori*/
/*Strutture dati*/
union VAL_CODICE {
char nome[16]; /*campo identificatore*/
int val_int; /*campo numero intero*/
char buffer_str[81];/*campo stringa*/ int S_L ;/*campo lunghezza della stringa*/ } ;
struct TOKEN {
int error_c;
int codice;
union VAL_CODICE val;
int col;
};
struct TOKEN *sym;
/*tabella delle parole chiavi*/
struct keyt { char *word;
int codice;
} keytab[]={ {"BEGIN",5}, {"END", 6}, {"PROGRAM", 7}, {"VAR", 8}, {"INTEGER", 9}, {"REAL", 10 }, {"BOOLEAN",11}, {"WRITELN", 12}, {"READLN", 13}, {"PROCEDURE", 14}, {"IF", 15}, {"THEN", 16}, {"ELSE", 17}, {"WHILE", 18}, {"DO", 19}, {"CHAR", 35}, {"FUNCTION", 36} };
/*prototipi delle funzioni che compongono lo scanner*/
void ERRORE(int );
char readchar(void);
void IS_KEYWORD(struct TOKEN*, struct keyt[]);
void SCAN(struct TOKEN*);
void INIT_SCAN (void); /*Funione che dichiara gli errori*/
void ERRORE (int n)
{ flag=falso;
switch(n){ case 1: printf("ERROR!!!Identificatore troppo lungo\n\n"); break; case 2: printf("ERROR!!!Numero intero troppo grande\n\n");break; case 3: printf("ERROR!!!Fine file inattesa\n\n");break; case 4: printf("ERROR!!!Fine linea inattesa\n\n"); break; case 5: printf("ERROR!!!Carattere non ammesso\n\n"); break; case 6: printf("ERROR!!!Keyword 'program' mancante\n\n");break; case 7: printf("ERROR!!! Identificatore mancante\n\n"); break; case 8: printf("ERROR!!! Operatore ';' mancante\n\n"); break; case 9: printf("ERROR!!! Keyword 'begin' mancante\n\n"); break; case 10 : printf("ERROR!!! Keyword 'end' mancante\n\n"); break; case 11 : printf("ERROR!!! Operatore '.' mancante\n\n"); break; case 12: printf("ERROR!!! Operatore ','mancante\n\n"); break; case 13 : printf("ERROR!!! Operatore ':' mancante\n\n"); break; case 14: printf("ERROR!!! Tipo variabile mancante\n\n"); break; case 15 : printf("ERROR!!! Parentesi destra mancante\n\n");break; case 16 : printf("ERROR!!! Operatore '+' mancante\n\n"); break; case 17 : printf("ERROR!!! Parentesi sinistra mancante\n\n");break; case 18 : printf("ERROR!!! Condizione mancante\n\n"); break; case 19: printf("ERROR!!! Keyword 'then' mancante\n\n"); break; case 20 : printf("ERROR!!! Corpo mancante\n\n"); break; case 21 : printf("ERROR!!! Keyword 'do' mancante\n\n"); break; case 22 : printf("ERROR!!! Operatore ':=' mancante\n\n"); break; case 23 : printf("ERROR!!! Operatore di confronto mancante\n\n"); break; case 24 : printf("ERROR!!! Valore mancante\n\n"); break; case 25 : printf("ERROR!!! Operarore '=' mancante\n\n"); break; case 26 : printf("ERROR!!! Virgolette mancanti\n\n"); break;
/*fine switch*/ } /* fine funzione errore */
}
/* Funzione che fornisce il carattere successivo di una stringa nel programma */
char readchar(void) { char carattere;
carattere=getc(filesource);
return carattere;
}
/*Funzione ricerca keyword*/
void IS_KEYWORD(struct TOKEN *sym, struct keyt keytab[]) { int condizione;
int lower,upper,middle;
int keyword; int n=(sizeof keytab[0]); lower=0,upper=n-1;
keyword=falso;
while(lower<=upper){
middle=(lower+upper)/2;
if(condizione=strcmp(sym->val.nome,keytab[middle].word<0))
upper=middle-1;
else if(condizione>0)
lower=middle+1;
else { keyword=vero;
sym->codice=keytab[lower].codice;
} }
if(keyword) {
sym->codice=I_C; }
} /*fine procedura di ricerca*/
/* funzione scan */
void SCAN(struct TOKEN *sym)/* funzione scan */
{ //const int A_S=0;/* Stato iniziale */ int C_S=1;/* Stato dei commenti */ int I_S=2;/* Stato identificatori */ int N_S=3;/* Stato numeri interi */ int S1_S=4;/* Stato delle stringhe */ int GT_S=6;/* Stato segno > */ int LT_S=7;/* Stato segno < */
/* variabili locali */ int S=A_S; int EXIT_FLAG=falso; int READ_FLAG=vero; int ERROR_FLAG=falso; int I;
/* corpo della funzione */ do switch(S) { case 0 :{ switch(ch) { case'{': S=C_S; break; case ' ': ;
case '\0' : break; case '\n' : { EXIT_FLAG=vero; sym->col=ch_col; sym->codice=EOF_C; break;}
case 'A' : case 'B' : case 'C' : case 'D' : case 'E' : case 'F' : case 'G' : case 'H' : case 'l' : case 'J' : case 'K' : case 'L' : case 'M': case 'N' : case 'O' : case 'P' : case 'Q' : case 'R' : case 'S' : case 'T' : case 'U' : case 'V' : case 'W' : case 'X' : case 'Y' : case 'Z' : { sym->col=ch_col; I=1; sym->val.nome[1]=ch; S=I_S; break; } case'0': case'1': case '2' : case '3': case '4' : case '5': case '6' : case '7': case'8': case'9': { sym->col=ch_col; sym->codice=N_C; sym->val.val_int=ch; S=N_S; break; } case '"' : { sym->col=ch_col; sym->val.S_L=0; S=S1_S; break; } case '+': {sym->col=ch_col; sym->codice=PLUS_C; EXIT_FLAG=vero; break; } case '>': {sym->col=ch_col; sym->codice=GT_C; S=GT_S; break; } case '<' : { sym->col=ch_col; sym->codice=LT_C; S=LT_S; break;}
case ':' : { sym->col=ch_col; sym->codice=COLON_C; break; } case ';' : { sym->col=ch_col; sym->codice=SEMICOL_C; break; }
case ',' : { sym->col=ch_col; sym->codice=COMMA_C; break; } case '.': { sym->col=ch_col; sym->codice=DOT_C; break; } case '(' : { sym->col=ch_col; sym->codice=PARL_C; break; } case ')' : { sym->col=ch_col; sym->codice=PARR_C; break; } case '-': { sym->col=ch_col; sym->codice=MINUS_C; break; } } }/* fine' switch A_S */ case 1 :{ switch(ch) { case '}': S=A_S; break; case '\n': ERRORE(4); EXIT_FLAG=vero; break;
default: ; } /* switch interno C_S*/ } case 2: {
switch(ch) { case '0' : case '1' : case '2' : case '3': case '4' : case '5' : case '6' : case '7' : case '8' : case'9':
case 'A' : case 'B' : case 'C' : case 'D' : case 'E' : case 'F' : case 'G' : case 'H' : case 'l' : case 'J' : case 'K' : case 'L' : case 'M': case 'N' : case 'O' : case 'P' : case 'Q' : case 'R' : case 'S' : case 'T' : case 'U' : case 'V' : case 'W' : case 'X' : case 'Y' : case 'Z' : break;
default :READ_FLAG=falso;EXIT_FLAG=vero; } /* switch interno I_S*/
}
case 3 : { switch(ch) { case '0' : case '1' : case '2' : case '3': case '4' : case '5' : case '6' : case '7' : case '8' : case'9':{ if (!ERROR_FLAG) { sym->val.val_int=sym->val.val_int * 10+ ch; if(sym->val.val_int=MAX_I) { ERROR_FLAG=vero; ERRORE(2); sym->val.val_int=MAX_I; } } break;
} default : READ_FLAG=falso; EXIT_FLAG=vero; } /* fine switch N_S */ } case 4 : { switch(ch) { case '"': sym->codice=S_C; EXIT_FLAG=vero; break;
case '\0' : ERRORE(3); sym->codice=S_C; EXIT_FLAG=vero; break; case '\n': ERRORE(4); sym->codice=S_C; READ_FLAG=falso; EXIT_FLAG=vero; break;
default: sym->val.S_L= sym->val.S_L +1; sym->val.buffer_str[0]=ch; } } /* fine switch S1_S */
case 5 : { switch(ch) { case '>=' : sym->codice=GE_C; EXIT_FLAG=vero; break; default: READ_FLAG=falso; EXIT_FLAG=vero; }
} /* fine switch GT_S */
case 6 : { switch(ch) { case '<=' : sym->codice=LE_C; EXIT_FLAG=vero; break; case '<>' : sym->codice=NE_C; EXIT_FLAG=vero; break; default : READ_FLAG=falso; EXIT_FLAG=vero; } /* fine switch LT_S */ /* fine case esterno */ } if (READ_FLAG) readchar(); } while (!EXIT_FLAG); /* Fine funzione scan */
/* Funzione INIT_SCAN */
}
void main(void) { if ((filesource = fopen("A:source.dat", "r")) == NULL ) printf("Il file non può essere aperto\n"); else { ch = readchar(); SCAN(sym); } /* fine funzione */
}
/*fine scanner*/
|
|
|
ohtar
Utente medio
|
Inserito il - 11/07/2004 : 16:26:05
|
Professore ma c'è la possibilità che al prossimo appello di laboratorio ci sia data una traccia del genere da risolvere in appena 1 ora? |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 16:31:13
|
No othar, questo è per il progetto da consegnare per quelli degli anni precedenti |
|
|
ohtar
Utente medio
|
Inserito il - 11/07/2004 : 16:40:22
|
Grazie Dio...quindi per noi fortunati c'è da sapere l'implementazione degli automi e la progettazione di una tecnica hash? |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 16:51:27
|
Citazione: Messaggio inserito da ohtar
Grazie Dio...
Esagerato, puoi chiamarmi Fabio
Citazione:
quindi per noi fortunati c'è da sapere l'implementazione degli automi e la progettazione di una tecnica hash?
Si non è cambiato niente |
|
|
mauroste
Nuovo Utente
|
Inserito il - 11/07/2004 : 18:46:16
|
Allora prof ho riprovato il programma,quando provo a compliarlo ho zero errori ma nn mi apre il file.Cosa c'e che nn va? |
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 11/07/2004 : 19:21:55
|
Citazione: Messaggio inserito da mauroste
Allora prof ho riprovato il programma,quando provo a compliarlo ho zero errori ma nn mi apre il file.Cosa c'e che nn va?
A parte gli errori presenti nella funzione SCAN, io credo ci siano anche problemi di stile di programmazione. Ti conviene sentire Ferilli cosa ti dice. In particolare chiedi conferma sulle struture dati che stai usando |
|
|
MnK
Nessuno può capire
Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 12/07/2004 : 13:20:56
|
Salve. ho svolto l'esonero del 2 maggio 2003 e l'appello del 11 giugno 2003. li allego qui. se il prof fuo' dare un'occhio così se sono giusti potranno essere scaricati liberamente da chiunque. in caso contrario li aggiusto. 1 domanda: per la progettazione di una fsa etc etc(2 domanda degli appelli) nn ho la + pallida idea di cosa scrivere.qualcuno ha suggerimenti e/o esercizi svolti? grazie.
|
La bontà è l'unico investimento che non fallisce mai. (H. D. THOUREAU) Ah LA PRIKKOPRAKK L'antica arte della ristorazione cinese....
|
Modificato da - MnK in data |
|
|
ohtar
Utente medio
|
Inserito il - 12/07/2004 : 14:11:04
|
Mnk ho visto l'allegato e mi sa che nell'espressione regolare hai saltato un 0A nella 1.1. potresti controllare perchè a me è sembrato così. poi alla fine hai scritto 01(01)* , ma non è uguale a (01)* ? |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
|
|
Leonefragile
alit...
Regione: Puglia
Prov.: Bari
Città: Alberobello
|
Inserito il - 17/07/2004 : 22:56:10
|
Cmq non funziona...oppure dovresti dirmi per bene come utilizzarlo... Ti ringrazio anticipatamente.
Tutto ciò che è computabile è computabile. |
Tutto ciò che è computabile è computabile. |
|
|
leo83
Utente giovane
|
Inserito il - 18/07/2004 : 12:45:36
|
Salve, volevo sapere:se uno consegna il compilatore e poi non passa lo scritto,fino a quando viene considerato valido il suo compilatore???
|
|
|
fabbattista
utente SEMPRE giovane
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 18/07/2004 : 15:53:00
|
Citazione: Messaggio inserito da leo83
Salve, volevo sapere:se uno consegna il compilatore e poi non passa lo scritto,fino a quando viene considerato valido il suo compilatore???
Per tutta la sessione è valido. Le sessioni sono dueuna estiva (da giugno a settembre inclusi) e una invernale (i restanti appelli) |
|
|
MnK
Nessuno può capire
Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 18/07/2004 : 17:01:04
|
Citazione: Messaggio inserito da Chilavert
prova con [%^\n] (spero di aver scritto bene, non uso sta istruzione da tempo) E fra l'altro, tutto ciò che è CALCOLABILE è COMPUTABILE sarebbe una frase + bella...
io sapevo %[^\n].... poi nn so... (feeb docet) |
La bontà è l'unico investimento che non fallisce mai. (H. D. THOUREAU) Ah LA PRIKKOPRAKK L'antica arte della ristorazione cinese....
|
|
|
ohtar
Utente medio
|
Inserito il - 18/07/2004 : 17:06:00
|
Prof può risp a questa domanda per favore:
Dati i seguenti linguaggi formali L1 = { a^nb^2n : n >= 0 } e L2 = { w app {a, b}* : |w| = 5k, k >= 0 } Stabilire se L = L1 · L2 è un linguaggio libero da contesto.
Posso calcolarmi l'intersezione dei 2 linguaggi definendo L={w|w=a^nb^2n, |w|=5k,k>=0} Poi definisco la grammatica per L: G=(X,V,S,P) P={S->lamda,aaaaabbbbbbbbbb,aaaaaSbbbbbbbbbb} Dato che G è libera da contesto allora L è libero da contesto.
Va bene? Se volessi usare le proprietà di chiusura, dato che L1 è libero da contesto ed L2 è lineare destro come faccio a determinare L=L1L2 mediante le proprietà di chiusura rispetto alla concatenzione (essendo i 2 linguaggi non appartenenti alla stessa classe)? |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
|
|
feeb
Cantù Che Conta Col Cayenne
Prov.: Zara
|
|
Discussione |
|
|
|