|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Devo implementare un linguaggio...
Salve a tutti.
Sto lavorando ad un piccolo compilatore. Man mano che procedo nello sviluppo testo piccole sezioni di codice affinchè tutto proceda per il meglio. Il mio problema si presenta nel parser. Ho il seguente linguaggio: Codice:
L = { (BIT)^n, n >= 1, BIT e { 0,1 } }
(quindi LALR con un solo puntatore di look-ahead senza conflitti shift/reduce). Ho pertanto generato la seguante grammatica: Codice:
s => (a) a => a BIT a => BIT scritto a mano: Codice:
%{
#include <stdio.h>
int counter;
int yylex(void);
extern void yyerror(char * s);
%}
%token BIT
%start s
%%
s : '('a')' {
printf("Valore risultante: %d!\n", counter);
return 0;
}
;
a : a BIT {
if ($2 == 1)
counter++;
}
;
a : BIT {
if ($1 == 1)
counter++;
}
;
%%
int
main(void)
{
counter = 0;
return(yyparse());
}
int
yylex(void)
{
char c;
c = getchar();
if (c == '0' || c == '1') {
c = c - '0';
return BIT;
}
else
return c;
}
Dove sbaglio? |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: May 2003
Città: Roma
Messaggi: 3642
|
mjordan non avevo letto sto 3d all'epoca...
ammazza che cacchio stai implementando, roba tostissima! ma che fine hai fatto? non ti si vede più! ciao |
|
|
|
|
|
#3 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
![]() Ora tu mi avrai risposto dopo due mesi... Io ti ho risposto dopo 4 anni e 7 mesi... Va bhè fa niente dai... Poi il problema l'ho risolto implementando la symbol table... Solo che adesso non mi ricordo dove stava l'errore...
Ultima modifica di mjordan : 07-12-2008 alle 00:38. |
|
|
|
|
|
|
#4 | |
|
Bannato
Iscritto dal: May 2003
Città: Roma
Messaggi: 3642
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
curiosità: e come procede il tuo progetto?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:05.





















