| V I S U A L I Z Z A D I S C U S S I O N E |
| falco_85 |
Inserito il - 09/06/2005 : 22:38:00 ho un pò di dubbi su questo automa,soprattutto per quanto riguarda la voce "cifre esadecimali" Vorrei sapere se qualcuno di voi ha risolto questo esercizio e se mi potrebbe inviare il file. Ecco qui la traccia:
Allegato: Prova di laboratorio del 11 gennaio 2005.rar 7,4 KB |
| 20 U L T I M E R I S P O S T E (in alto le più recenti) |
| Kevin82 |
Inserito il - 21/06/2005 : 18:29:33 Citazione: Messaggio inserito da falco_85
ho un pò di dubbi su questo automa,soprattutto per quanto riguarda la voce "cifre esadecimali" Vorrei sapere se qualcuno di voi ha risolto questo esercizio e se mi potrebbe inviare il file. Ecco qui la traccia:
ti posso dire che puoi tagliare la testa al toro inserendo la libreria (macro) ctype nell'intestazione del programma ed usare
if (isxdigit(s[i])) current_state=ec,,,, isxdigit e tutte le altre sono riportate su la magior parte dei manuali
ciauz,.,.,.,.,.,.,.,.c injection   
|
| gym83s |
Inserito il - 21/06/2005 : 15:18:12 si infatti, mi ero confuso ehe he he grazie cmq ciao
|
| rel |
Inserito il - 19/06/2005 : 12:08:39 Il tuo errore era qui:
case F3: current_state == POZZA; break;
ovviamente non va == ma solo = perchè non è un confronto ma un'assegnazione. Ti sarà sfuggito. In ogni caso questo è il codice corretto (avevi anche fatto un paio di altri errori, in quanto, se la traccia era questa:
Progettare il frammento di analizzatore lessicale (automa) responsabile del riconoscimento degli identificatori che iniziano per lettera, eventualmente continuano con misture qualunque di lettere e cifre, e terminano con un carattere di sottolineatura seguito da al più 2 cifre.
..dicendo eventualmente vuol dire che può anche non esserci, quindi q1 è già stato finale [e quindi stringhe del tipo 'a2s23sd' o 'aaaaa' sono anch'esse riconosciute])! Cmq ti allego il file corretto [indentato un po' altrimenti era illegibile] e tra l'altro nel main ti ho sistemato il discorso dei parametri [se il file di input lo dichiari già tu non ha senso usare argc e argv[] ] ciao
Allegato: 11.zip 1,07 KB |
| gym83s |
Inserito il - 18/06/2005 : 16:49:21 scusa reload ho problemi con questo automa per quanto riguarda la questione delle altre cose scritte dopo la stringa valida:
questo automa accetta stringhe del tipo: lettera,alfanum,_ oppure lettera,alfanum,_cifra oppure lettera,alfanum,_cifra,cifra
questo automa ha tre stati finali ed io all'ultimo ho messo come hai detto tu "current_state = POZZA" ma non mi funziona perchè me lo riconoce lo stesso se scrivo una cosa del tipo :
A5a5b_43aa
puoi vederlo tu? te lo posto tutto completo anke con il file txt ok? grazie..
Allegato: 11032003_.rar 1,2 KB
|
| rel |
Inserito il - 18/06/2005 : 00:49:13 Vai sul sito di mencar trovi tutto [gr x cs non potrà uscire all'esame perchè è un po' più complessa da implementare] |
| gym83s |
Inserito il - 17/06/2005 : 20:08:08 anche per quanto riguarda l'implementazione della funzione per stabilire se la grammatica è dipendente da contesto, se qualcuno le ha queste che ho elencato, le posti sul forum per favore... thanks
|
| gym83s |
Inserito il - 17/06/2005 : 11:44:59 ok ok ho fatto.... thanks
sapete se per caso nel grammar reader, c'è la possibilità che esca oltre cercare il simbolo iniziale,stabilire se libera o dipendente da contesto e lineare destra, qualcosa riguardo alle produzioni monotone o trasformazioni di produzioni monotone in contestuali o operazioni di concatenazione unione ecc???
se nel caso qualcuno sa come si fanno??
|
| gym83s |
Inserito il - 17/06/2005 : 11:26:12 come faccio a saperlo con precisione??? dove sta scritto???
|
| rel |
Inserito il - 16/06/2005 : 23:16:49 Qualcosa del genere:
int is_initsym(Grammar* g) { int i=0; if (g->productions[0].left.word[0] == 'S') return 1; else return 0; } |
| gym83s |
Inserito il - 16/06/2005 : 20:41:24 ragà scusate anke se non è questo il posto giusto, nel grammar reader come faccio a poter controllare che il simbolo iniziale sia "S"?? scusate se lo chiedo qui ma non mi risponde nessuno nell'apposito spazio...siate magnanimi qui....

|
| gym83s |
Inserito il - 16/06/2005 : 20:34:20 mmm in effetti....hai ragione....grazie tante!!!
|
| rel |
Inserito il - 16/06/2005 : 17:27:46 ragazzi scusate, ho saputo che il prof. boccia all'esame se si verifica il fatto che, posto un'automa che riconosce stringhe ad esempio del tipo " /*ciao*/ "la stringa " /*ciaociao*/sss " viene considerata valida. Come faccio a fare in modo che l'analizzatore consideri come non validi e caratteri posti dopo la stringa valida?? penso di essermi spiegato bene e spero che qualcuno lo sappia fare.... ciao e grazie!
Ciao gym! Se leggevi un po' le discussioni del gruppo di linguaggi avresti già risolto.
ho risolto mrluglio, basta mettere nello stato finale if (s[i] == '\0') current_state = F;
Non è necessario mettere if (s[i] == '\0')! Semplicemente [ammettendo che lo stato q3 ad esempio sia quello finale] fai:
case q3: current_state = ERROR;
in modo che, qualsiasi simbolo viene letto oltre */, la stringa non è considerata valida! Saluti |
| gym83s |
Inserito il - 16/06/2005 : 16:30:48 ok
Allegato: prove di automi 16 luglio 2004 e 11 gennaio 2005.rar 6,58 KB |
| mrluglio |
Inserito il - 16/06/2005 : 15:29:42 postami di nuovo la traccia....ce ne sono un pò sopra e nn so a quale ti riferisci. |
| gym83s |
Inserito il - 16/06/2005 : 14:03:02 ad esempio nella traccia dell' 11012005 l'automa va bene così com'è? te lo posto (la traccia è già postata sopra) così mi dici se va bene così oppure no
Allegato: 11012005_.rar 1,32 KB |
| mrluglio |
Inserito il - 16/06/2005 : 12:24:05 Citazione: Messaggio inserito da gym83s
ho risolto mrluglio, basta mettere nello stato finale if (s[i] == '\0') current_state = F; cmq il problema dei blank non l'ho ancora capito...come mi devo comportare???
allora: la cosa dello stato finale = '\0' non mi è troppo chiara... secondo me dovresti rifare il programma seguendo passo passo quell'automa... cmq se ti funziona...meglio così. per il blank: se quello è l'automa riconoscitore del commento allora lo spazio va trattato come un normale carattere... poi...dipende dalla traccia.... se nella traccia dice che i possibili caratteri sono alfanumerici allora gli spazi nn sono ammessi... se posti la traccia posso darti conferma. ciao. |
| gym83s |
Inserito il - 16/06/2005 : 11:22:32 ho risolto mrluglio, basta mettere nello stato finale if (s[i] == '\0') current_state = F; cmq il problema dei blank non l'ho ancora capito...come mi devo comportare???
|
| gym83s |
Inserito il - 16/06/2005 : 10:55:51 capisco ma allora, il vettore che ho postato precedentemente... quello 23072002, come va modificato?(parlo del codice). potresti dargli un'occhiata?? please...
e poi...un'altra cosa,come ci si comporta nei confronti dei blank? bisogna considerarli validi o no? ad esempio: /*cia o*/ è valido o no?? grazie
|
| mrluglio |
Inserito il - 16/06/2005 : 10:25:51 Citazione: Messaggio inserito da gym83s
mrluglio forse non ho spiegato bene io il problema, io volevo sapere se c'è un comando o un ciclo particolare che mi faccia considerare come non valide le stringhe che hanno la parte valida dell'automa più altre lettere aggiunte; non penso che si debba in quei casi ridisegnare l'automa o altro...poi non so.... fammi sapere.CIAO
Nessun comando! Per considerare come non valide le stringhe in più alla parte valida devi imporre il giusto stato finale. Punto. L'automa che ti ho disegnato fa esattamente questo. legge tutto fino a */. Ciò che viene dopo è errato. Se nn ti ho risposto...allora non ho capito cosa cerchi!
 |
| gym83s |
Inserito il - 16/06/2005 : 09:53:52 mrluglio forse non ho spiegato bene io il problema, io volevo sapere se c'è un comando o un ciclo particolare che mi faccia considerare come non valide le stringhe che hanno la parte valida dell'automa più altre lettere aggiunte; non penso che si debba in quei casi ridisegnare l'automa o altro...poi non so.... fammi sapere.CIAO
|