| Autore |
Discussione  |
|
|
ioboss
Utente medio
 

Regione: Puglia
Prov.: Bari
|
Inserito il - 18/02/2004 : 03:30:17
|
devo usare per forza gli insiemi FIRST e FOLLOW nell'analizzatore sintattico? Specifica sintattica
<OP> ::= <ID> | “[” <ESPR> “]” <REG_NUM> ::= <REG> | <NUM> <FATTORE> ::= {<REG_NUM> * <FATTORE>} | {<REG_NUM> / <FATTORE>} | <REG_NUM> <ESPR> ::= {<FATTORE> + <ESPR>} | {<FATTORE> - <ESPR> }| <FATTORE> <REG> ::= AX | BX | CX | DX <VAR> ::= <ID> {DB | DW} {<STR> | <NUM>} <PROCEDURE> ::= <ID> PROC {FAR | NEAR} <ISTRUZIONE> RET <ID> ENDP <SEG-DATA> ::= DATA SEGMENT PARA PUBLIC <VAR> DATA ENDS <SEG-CODE> ::= CODE SEGMENT PARA PUBLIC <PROCEDURE> CODE ENDS
<PROGRAMMA> ::= <SEG-DATA> <SEG-CODE> END <AND> ::= AND <OP>, <OP> <OR> ::= OR <OP> <NOT> ::= NOT <OP> <ADDIZIONE> ::= ADD <OP>,<OP> <SOTTRAZIONE> ::= SUB <OP>,<OP> <SPOSTA> ::= MOV <OP>,<OP> <METTI> ::= PUSH <OP> <TOGLI> ::= POP <OP> <SCAMBIA> ::= XCHG <OP>, <OP> <CONFRONTA> ::= CMP <OP>,<OP> <MOLTIPLICA> ::= MUL <OP> <DIVIDI> ::= DIV <OP> <INCREMENTA> ::= INC <OP> <DECREMENTA> ::= DEC <OP> <SALTA> ::= JMP <LABEL> <CICLA> ::= LOOP <LABEL> <CHIAMA> ::= CALL <IDPROC> <ISTRUZIONE> ::= [<ID>: ] {<ASSUME> | <PROCEDURE> | <AND> | <XOR> | <OR> | <NOT> | <ADDIZONE> | <SOTTRAZIONE> | <SPOSTA> | <METTI> | <TOGLI> | <SCAMBIA> | <CONFRONTA> | <MOLTIPLICA> | <DIVIDI> | <INCREMENTA> | <DECREMENTA> | <SALTA> | <CICLA> | <CHIAMA>} [<COMMENTO>]
queste regole sintattiche del linguaggi asm sono giuste? mi potete fare un esempio di una delle funzioni ke devono riconoscere i non terminali sopraelencati? grzie gentilissimi... ps:sono nella bippp.... domani è lo scritto.. (meno male ke lo scritto l'ho passato già..)
|
Qualcuno era comunista perché chi era contro, era comunista! (G. Gaber) |
|
|
ioboss
Utente medio
 

Regione: Puglia
Prov.: Bari
|
Inserito il - 18/02/2004 : 03:31:26
|
| riusciro' a finire il progetto in tempo per l'orale?? |
Qualcuno era comunista perché chi era contro, era comunista! (G. Gaber) |
 |
|
|
nicux
Sottonicux
   

Regione: Estero
Prov.: Zara
Città: Citta'
|
Inserito il - 18/02/2004 : 14:59:21
|
gli insiemi first e follow ti servono solo se decidi di gestire gli errori nel parser, la loro utilità sta nel determinare i token di sincronizzazione e i token attesi da passare alla skip_to(). La skip_to() (puoi chiamarla diversamante, è il concetto che conta) è una funzione che permette al parser di continuare la compilazione anche dopo aver riscontrato un errore, cioè di rientrare correttamente nell'albero della grammatica, tanto per capirci. Senza di essa (e senza la guida degli insiemi first e follow) un errore dirotta il parser fuori dal corretto cammino nell'albero della grammatica innescando un numero imprevedibile di "falsi errori").
Per avere un'idea di come funziona puoi scaricare documentazione e sorgente del mio compilatore nella sezione download del forum.
Fammi sapere se qualcosa non è chiara... |
gia' e non ancora... |
Modificato da - nicux in data |
 |
|
|
ioboss
Utente medio
 

Regione: Puglia
Prov.: Bari
|
Inserito il - 18/02/2004 : 15:43:22
|
nicux.. ho un po' di cose nn chiare.. nel parser io definisco tante funzioni quanti sono i nn terminali e i terminali della mia specifica sintattica.. giusto? ma queste funzini controllano solo la categoria in cui l'automa si sposta per verificare la correttezza del programma?? O_O mi puoi scrivere anke in linguaggio lineare una funzione di uno dei miei nn terminali? giusto x capire bene.. sono nel primo messaggio della discussione.... |
Qualcuno era comunista perché chi era contro, era comunista! (G. Gaber) |
 |
|
| |
Discussione  |
|