Cambio de bisonte / reducir conflicto / reducir / reducir advertencias de conflicto

Cuando ejecuto este código de bison en Ubuntu Linux, recibo estas advertencias: 1 cambio / reducción de conflictos [-Wconflicts-sr] 2 reducción / reducción de conflictos [-Wcolficts-sr]

Aquí hay una captura de pantalla para mayor claridad:http://i.imgur.com/iznzSsn.png

Editar: reducir / reducir errores están en la línea 86: typos_dedomenwn línea 101: typos_synartisis

y el error shift / reduce está en: línea 129: entoli_if

No puedo encontrar cómo solucionarlos ¿alguien podría ayudarme?

Aquí está el siguiente código de bison:

        %{

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>

        int totalerrors=0;

        extern int yylex();
        extern FILE *yyin;
        extern int lineno; //Arithmos grammis pou kanei parse

        //error handling
        void yyerror(const char *msg) {
        }
        //filling the error array
        void printError(char y[],int x){
            //param 1: error string
            //param 2: line number
            char temp[15];
            char temp2[5];
            char final[256];
            sprintf(temp2,"%d: ",x);
            strcpy(temp, "In Line ");
            strcat(temp,temp2);
            strcpy(final,"");
            strcat(final,temp);
            strcat(final,y);
            printf("%d) %s\n",totalerrors+1,final);
            totalerrors++;
        }
        %}
        %start start
        %token T_sigkritikos_telestis
        %token T_typos_dedomenwn
        %token T_typos_synartisis
        %token T_stathera
        %token T_newline
        %token T_kefalida_programmatos
        %token T_extern
        %token T_void
        %token T_return
        %token T_if
        %token T_else
        %token T_plus
        %token T_minus
        %token T_mult
        %token T_div
        %token T_percentage
        %token T_int
        %token T_bool
        %token T_string
        %token T_true
        %token T_false
        %token T_id
        %token T_semic
        %token T_comma
        %token T_openpar
        %token T_closepar
        %token T_ampersand
        %token T_begin
        %token T_end
        %token T_excl
        %token T_or
        %token T_equals
        %token T_semileft
        %token T_semiright
        %%
        start: exwterikes_dilwseis T_kefalida_programmatos tmima_orismwn tmima_entolwn;

        exwterikes_dilwseis: exwteriko_prwtotypo exwterikes_dilwseis
            | ;

        exwteriko_prwtotypo: T_extern prwtotypo_synartisis;

        tmima_orismwn: orismos tmima_orismwn
            | ;

        orismos: orismos_metavlitwn
            | orismos_synartisis
            | prwtotypo_synartisis;

        orismos_metavlitwn: typos_dedomenwn lista_metavlitwn T_semic;

        typos_dedomenwn: T_int
            | T_bool
            | T_string;

        loop1: T_comma T_id
            | ;

        lista_metavlitwn: T_id loop1;

        orismos_synartisis: kefalida_synartisis tmima_orismwn tmima_entolwn;

        prwtotypo_synartisis: kefalida_synartisis T_semic;

        kefalida_synartisis: typos_synartisis T_id T_openpar lista_typikwn_parametrwn T_closepar
            | typos_synartisis T_id T_openpar T_closepar;

        typos_synartisis: T_int
            | T_bool
            | T_void;

        lista_typikwn_parametrwn: typikes_parametroi loop2;

        loop2: T_comma typikes_parametroi
            | ;

        typikes_parametroi: typos_dedomenwn T_ampersand T_id;

        tmima_entolwn: T_begin loop3 T_end;

        loop3: entoli loop3
            | ;

        entoli: apli_entoli T_semic
            | domimeni_entoli
            | sintheti_entoli;

        sintheti_entoli: T_semileft loop3 T_semiright;

        domimeni_entoli: entoli_if;

        apli_entoli: anathesi 
            | klisi_sunartisis
            | entoli_return
            | ;

        entoli_if: T_if T_openpar geniki_ekfrasi T_closepar entoli else_clause 
            | T_if T_openpar geniki_ekfrasi T_closepar entoli;

        else_clause: T_else entoli;

        anathesi: T_id T_equals geniki_ekfrasi;

        klisi_sunartisis: T_id T_openpar lista_pragmatikwn_parametrwn T_closepar 
            | T_id T_openpar T_closepar;

        lista_pragmatikwn_parametrwn: pragmatiki_parametros loop4;

        loop4: T_semic pragmatiki_parametros loop4
            | ;

        pragmatiki_parametros: geniki_ekfrasi;

        entoli_return: T_return geniki_ekfrasi 
            | T_return;

        geniki_ekfrasi: genikos_oros loop5;

        loop5: T_or T_or genikos_oros loop5
            | ;

        genikos_oros: genikos_paragontas loop6;

        loop6: T_ampersand T_ampersand loop6 
            | ;

        genikos_paragontas: T_excl genikos_protos_paragontas
            | genikos_protos_paragontas;

        genikos_protos_paragontas: apli_ekfrasi tmima_sigrisis
            | apli_ekfrasi;

        tmima_sigrisis: T_sigkritikos_telestis apli_ekfrasi;



        apli_ekfrasi: aplos_oros loop7;

        loop7: T_plus aplos_oros loop7
            | T_minus aplos_oros loop7
            | ;

        aplos_oros: aplos_paragontas loop8;

        loop8: T_mult aplos_paragontas loop8
            | T_div aplos_paragontas loop8
            | T_percentage aplos_paragontas loop8
            | ;

        aplos_paragontas: T_plus aplos_prot_oros
            | T_minus aplos_prot_oros
            | aplos_prot_oros;

        aplos_prot_oros: T_id
            | stathera
            | klisi_sunartisis
            | T_openpar geniki_ekfrasi T_closepar;

        stathera: T_true
            |T_false;

        %%
        int main(int argc, char *argv[]){
            ++argv; --argc;  //agnooume to onoma tou exe
            if (argc==1) {
                FILE *fp = fopen(argv[0],"r");
                if (fp!=NULL) {
                    printf("Reading input from file: %s\n",argv[0]);
                    printf("Output:\n\n");
                    yyin = fp;
                    yyparse();
                } else {
                    printf("File doesn't exist\n");
                    return 1;
                }
            } else if (argc>1) {
                printf("Only one file allowed for input...\n");
                return 1;
            } else {
                printf ("Parsing from stdin..\n");
                yyparse();
            }
            if (totalerrors==0) {
                printf("All good!\n");
                printf("===================================\n");
                printf("Parsing complete! No errors found!!\n");
            } else {
                printf("===================================\n");
                printf("Total Errors: %d\n",totalerrors);
            }
            return 0;
        }

Respuestas a la pregunta(1)

Su respuesta a la pregunta