%token NUMERO %{ int grafo[16][16]; int indice; int i; %} %% listarec: /* empty */ | listarec rec ; rec: recordid '{' listafield '}' | error ; recordid: '@' NUMERO { indice=$2; } ; listafield: field | listafield field ; field: '$' NUMERO '=' NUMERO ';' { grafo[indice][$2]=$4; } ; %% int yyerror( char* s ) { printf("-- %s --",s); } main (){ int i,j; int somma; for( i=0; i<16; i++) for( j=0; j<16; j++ ) grafo[i][j]=0; yyparse(); printf(" "); for( j=0; j<16; j++ ) printf(" $%02d ",j); printf("\n"); for( i=0; i<16; i++ ) { printf(" @%02d ",i); for( j=0; j<16; j++ ) printf(" %3d ",grafo[i][j]); printf("\n"); } somma=0; for( i=0; i<16; i++ ) somma=somma+grafo[i][0]; printf("\nSomma dei pesi degli archi entranti nel nodo 0: %d\n",somma); return 0; }