help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Resolving shift/reduce conflict in Bison grammar


From: anandvn
Subject: Re: Resolving shift/reduce conflict in Bison grammar
Date: Sat, 31 Jul 2010 07:39:55 -0700 (PDT)

Hi,

find the output file info below,

State 0 contains 6 shift/reduce conflicts.
State 7 contains 6 shift/reduce conflicts.

state 0

    STATIC      shift, and go to state 1
    CONST       shift, and go to state 2
    VOLATILE    shift, and go to state 3
    EXTERN      shift, and go to state 4
    INT         shift, and go to state 5
    UNSIGNED    shift, and go to state 6

    STATIC      [reduce using rule 10 (init_dec)]
    CONST       [reduce using rule 10 (init_dec)]
    VOLATILE    [reduce using rule 10 (init_dec)]
    EXTERN      [reduce using rule 10 (init_dec)]
    INT         [reduce using rule 10 (init_dec)]
    UNSIGNED    [reduce using rule 10 (init_dec)]
    $default    reduce using rule 10 (init_dec)

    translation_unit    go to state 7
    external_declaration        go to state 8
    function_definition go to state 9
    declaration go to state 10
    init_dec    go to state 11
    declaration_specifiers      go to state 12
    storage_class_specifier     go to state 13
    type_specifier      go to state 14
    type_qualifier      go to state 15

state 7

    translation_unit  ->  translation_unit . external_declaration   (rule 2)

    $           go to state 31
    STATIC      shift, and go to state 1
    CONST       shift, and go to state 2
    VOLATILE    shift, and go to state 3
    EXTERN      shift, and go to state 4
    INT         shift, and go to state 5
    UNSIGNED    shift, and go to state 6

    STATIC      [reduce using rule 10 (init_dec)]
    CONST       [reduce using rule 10 (init_dec)]
    VOLATILE    [reduce using rule 10 (init_dec)]
    EXTERN      [reduce using rule 10 (init_dec)]
    INT         [reduce using rule 10 (init_dec)]
    UNSIGNED    [reduce using rule 10 (init_dec)]
    $default    reduce using rule 10 (init_dec)

    external_declaration        go to state 16
    function_definition go to state 9
    declaration go to state 10
    init_dec    go to state 11
    declaration_specifiers      go to state 12
    storage_class_specifier     go to state 13
    type_specifier      go to state 14
    type_qualifier      go to state 15

How to resolve these conflicts? how to obtain my requirement to initialize
the declaration before parser starts into the declaration part?

Full output file :  http://old.nabble.com/file/p29313323/grammar.output
grammar.output 

- Anand V


panayk wrote:
> 
> Hi!
> 
> Use the -v (verbose) flag on bison to generate the xxx.output file that 
> contains more information about the parser automaton (including where 
> the conflicts appear). Then please post it here.
> 
> You may also want to read the debugging section from:
> 
> info bison
> 
> Regards,
>      Panayiotis
> 
> On 07/31/2010 04:54 PM, anandvn wrote:
>> Hi,
>>
>> Could any one please help me in resolving the shift/reduce in the
>> following
>> grammar?
>>
>> %{
>> #include<stdio.h>
>> extern char yytext[];
>> extern int column;
>> void yyerror(char const *s);
>> %}
>>
>> %union
>> {
>>      unsigned int tokVal;
>>      unsigned char *tokValStr;
>> }
>>
>> /* C operators */
>> %token<tokVal>  STATIC CONST VOLATILE EXTERN INT UNSIGNED VARNAME EQUAL
>> COLON OP_BRACE CL_BRACE IDENTIFIER
>>
>> %type<tokVal>  declaration translation_unit declaration_specifiers
>> storage_class_specifier type_specifier type_qualifier
>> init_declarator_list
>>
>> /* Parsing starts with this transalation unit */
>> %start translation_unit
>>
>> %%
>>
>> translation_unit
>>      : external_declaration
>>      | translation_unit external_declaration
>>      ;
>>
>> external_declaration
>>      : function_definition
>>      | declaration
>>      ;
>>
>> function_definition
>>      : declaration_specifiers declarator compound_statement
>>      ;
>>
>> declarator
>>      : IDENTIFIER
>>      ;
>>
>> compound_statement
>>      : OP_BRACE CL_BRACE
>>      ;
>>      
>> declaration
>>      : init_dec declaration_specifiers COLON
>>      | init_dec declaration_specifiers init_declarator_list COLON
>>      ;       
>>
>> init_dec
>>      : {printf("*** Process for Initialization ***\n\n");}
>>      
>> init_declarator_list
>>      :       EQUAL VARNAME
>>      ;
>>      
>> declaration_specifiers
>>      : storage_class_specifier
>>      | storage_class_specifier declaration_specifiers
>>      | type_specifier
>>      | type_specifier declaration_specifiers
>>      | type_qualifier
>>      | type_qualifier declaration_specifiers
>>      ;
>>      
>> storage_class_specifier
>>      : EXTERN
>>      | STATIC
>>      ;
>>
>> type_specifier
>>      : INT
>>      | UNSIGNED
>>      ;       
>>      
>> type_qualifier
>>      : CONST
>>      | VOLATILE
>>      ;
>>      
>> %%
>>
>> void yyerror(char const *s)
>> {
>>      fflush(stdout);
>>      printf("\n%*s\n%*s\n", column, "^", column, s);
>> }
>>
>> In the rule "declaration", I want to perform initalization activities
>> using
>> the empty rule "init_dec" (original code here
>> http://old.nabble.com/file/p29313133/Test.zip Test.zip ). But i'm getting
>> shift/reduce conflict. Since I'm new to this bison, i need help from you
>> to
>> resolve this conflict. I tried by i felt very difficult.
>>
>> Thanks
>> Anand V
>>    
> 
> 
> _______________________________________________
> address@hidden http://lists.gnu.org/mailman/listinfo/help-bison
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Resolving-shift-reduce-conflict-in-Bison-grammar-tp29313133p29313323.html
Sent from the Gnu - Bison - Help mailing list archive at Nabble.com.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]