Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 Domande per il docente del corso B
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Discussione Bloccata
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Precedente | Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 29

battistis
Utente Nonno

eye_bat


Regione: Friuli-Venezia Giulia
Prov.: Verbano-Cusio-Ossola
Città: inCentroConPassAuto


Inserito il - 11/07/2004 : 10:07:47  Mostra Profilo  Visita l'Homepage di battistis Invia a battistis un Messaggio Privato
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...
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 10:17:41  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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
Torna all'inizio della Pagina

mauroste
Nuovo Utente



Inserito il - 11/07/2004 : 11:51:33  Mostra Profilo  Visita l'Homepage di mauroste Invia a mauroste un Messaggio Privato
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*/



Torna all'inizio della Pagina

Sinkler
Croce & Delizia

gattino


Regione: Puglia
Prov.: Bari
Città: Molfetta


Inserito il - 11/07/2004 : 11:58:51  Mostra Profilo  Visita l'Homepage di Sinkler  Clicca per vedere l'indirizzo MSN di Sinkler Invia a Sinkler un Messaggio Privato
OH My God!!

mauroste non era meglio mettere un allegato???vabbè...



Citazione:
Messaggio inserito da mauroste

Professora la prego dia....


hihhi...SF!!


Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 13:09:40  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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.

Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 13:11:23  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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*/
Torna all'inizio della Pagina

ohtar
Utente medio



Inserito il - 11/07/2004 : 16:26:05  Mostra Profilo  Visita l'Homepage di ohtar  Clicca per vedere l'indirizzo MSN di ohtar Invia a ohtar un Messaggio Privato
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.
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 16:31:13  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
No othar, questo è per il progetto da consegnare per quelli degli anni precedenti
Torna all'inizio della Pagina

ohtar
Utente medio



Inserito il - 11/07/2004 : 16:40:22  Mostra Profilo  Visita l'Homepage di ohtar  Clicca per vedere l'indirizzo MSN di ohtar Invia a ohtar un Messaggio Privato
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.
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 16:51:27  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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
Torna all'inizio della Pagina

mauroste
Nuovo Utente



Inserito il - 11/07/2004 : 18:46:16  Mostra Profilo  Visita l'Homepage di mauroste Invia a mauroste un Messaggio Privato
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?
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 11/07/2004 : 19:21:55  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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
Torna all'inizio della Pagina

MnK
Nessuno può capire


Regione: Puglia
Prov.: Bari
Città: Molfetta


Inserito il - 12/07/2004 : 13:20:56  Mostra Profilo  Visita l'Homepage di MnK  Clicca per vedere l'indirizzo MSN di MnK Invia a MnK un Messaggio Privato
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
Torna all'inizio della Pagina

ohtar
Utente medio



Inserito il - 12/07/2004 : 14:11:04  Mostra Profilo  Visita l'Homepage di ohtar  Clicca per vedere l'indirizzo MSN di ohtar Invia a ohtar un Messaggio Privato
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.
Torna all'inizio della Pagina

Leonefragile
alit...

Leone


Regione: Puglia
Prov.: Bari
Città: Alberobello


Inserito il - 17/07/2004 : 22:56:10  Mostra Profilo  Visita l'Homepage di Leonefragile Invia a Leonefragile un Messaggio Privato
Cmq non funziona...oppure dovresti dirmi per bene come
utilizzarlo...
Ti ringrazio anticipatamente.

Tutto ciò che è computabile è computabile.

Tutto ciò che è computabile è computabile.
Torna all'inizio della Pagina

leo83
Utente giovane



Inserito il - 18/07/2004 : 12:45:36  Mostra Profilo  Visita l'Homepage di leo83 Invia a leo83 un Messaggio Privato
Salve,
volevo sapere:se uno consegna il compilatore e poi non passa lo scritto,fino a quando viene considerato valido il suo compilatore???
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 18/07/2004 : 15:53:00  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato
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)
Torna all'inizio della Pagina

MnK
Nessuno può capire


Regione: Puglia
Prov.: Bari
Città: Molfetta


Inserito il - 18/07/2004 : 17:01:04  Mostra Profilo  Visita l'Homepage di MnK  Clicca per vedere l'indirizzo MSN di MnK Invia a MnK un Messaggio Privato
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....
Torna all'inizio della Pagina

ohtar
Utente medio



Inserito il - 18/07/2004 : 17:06:00  Mostra Profilo  Visita l'Homepage di ohtar  Clicca per vedere l'indirizzo MSN di ohtar Invia a ohtar un Messaggio Privato
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.
Torna all'inizio della Pagina

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 18/07/2004 : 17:21:03  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato
L1 mi sembra C.F. (S-> aSbb | lamdba) e L2 lineare destro:
S -> lamdba | aA | bA
A -> aB | bB
B -> aC | bC
C -> aD | bD
D -> aS | bS
quindi essendo entrambi C.F. ed essendo i C.F. chiusi rispetto alla concatenazione, anche L e' C.F.
e' sbagliato cosi' ?

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/
Torna all'inizio della Pagina
Pagina: di 29 Discussione Precedente Discussione Discussione Successiva  
Pagina Precedente | Pagina Successiva
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Discussione Bloccata
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,41 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000