YACC

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • daniele.zurico@gmail.com

    #1

    YACC

    Hello I've a big problem i search to parse an header file(C). I not
    know how to solve the problem in the line 3 for the $4.
    Someone can help me?

    /* STRUCT & UNION */
    struct_or_union _specifier
    : struct_or_union IDENTIFIER '{' struct_declarat ion_list '}'
    { printf("%d,%s,% s",$1->type,$2->word_name,$4?? ?????????) }
    | struct_or_union '{' struct_declarat ion_list '}'
    | struct_or_union IDENTIFIER
    ;

    struct_or_union
    : STRUCT { $$=mktype(TSTRU CT); }
    | UNION { $$=mktype(TUNIO N); }
    ;

    struct_declarat ion_list
    : struct_declarat ion
    | struct_declarat ion_list struct_declarat ion
    ;

    struct_declarat ion
    : specifier_quali fier_list struct_declarat or_list ';'
    ;

    specifier_quali fier_list
    : type_specifier specifier_quali fier_list
    | type_specifier
    ;

    struct_declarat or_list
    : struct_declarat or
    | struct_declarat or_list ',' struct_declarat or
    ;

    struct_declarat or
    : declarator
    | ':' LNG
    | declarator ':' LNG
    ;

    declarator
    : pointer direct_declarat or
    | direct_declarat or
    ;

    pointer
    : '*'
    | '*' pointer
    ;

    direct_declarat or
    : IDENTIFIER
    | '(' declarator ')'
    | direct_declarat or '[' LNG ']'
    | direct_declarat or '[' ']'
    | direct_declarat or '(' parameter_list ')'
    | direct_declarat or '(' identifier_list ')'
    | direct_declarat or '(' ')'
    ;

    parameter_list
    : parameter_decla ration
    | parameter_list ',' parameter_decla ration
    ;

    identifier_list
    : IDENTIFIER
    | identifier_list ',' IDENTIFIER
    ;

    parameter_decla ration
    : declaration_spe cifiers declarator
    | declaration_spe cifiers abstract_declar ator
    | declaration_spe cifiers
    ;

    direct_abstract _declarator
    : '(' abstract_declar ator ')'
    | '[' ']'
    | '[' LNG ']'
    | direct_abstract _declarator '[' ']'
    | direct_abstract _declarator '[' LNG ']'
    | '(' ')'
    | '(' parameter_list ')'
    | direct_abstract _declarator '(' ')'
    | direct_abstract _declarator '(' parameter_list ')'
    ;

    abstract_declar ator
    : pointer
    | direct_abstract _declarator
    | pointer direct_abstract _declarator
    ;

  • user923005

    #2
    Re: YACC

    You want news:comp.compi lers

    Comment

    • SM Ryan

      #3
      Re: YACC

      daniele.zurico@ gmail.com wrote:
      # Hello I've a big problem i search to parse an header file(C). I not
      # know how to solve the problem in the line 3 for the $4.
      # Someone can help me?
      #
      # /* STRUCT & UNION */
      # struct_or_union _specifier
      # : struct_or_union IDENTIFIER '{' struct_declarat ion_list '}'
      # { printf("%d,%s,% s",$1->type,$2->word_name,$4?? ?????????) }

      $4 is the value of struct_declarat ion_list, but

      # struct_declarat ion_list
      # : struct_declarat ion
      # | struct_declarat ion_list struct_declarat ion
      # ;

      you're not assigning $$ in struct_declarat ion_list.

      --
      SM Ryan http://www.rawbw.com/~wyrmwif/
      I have no respect for people with no shopping agenda.

      Comment

      Working...