5.16.5.3. Struct Binding

Start data section to src/flx_parse.mly[8 /33 ] Next Prev First Last
   734: opt_equal:
   735:   | EQUAL {()}
   736:   | {()}
   737: 
   738: struct_decl:
   739:   | STRUCT NAME tvarlist opt_equal LBRACE struct_component_aster RBRACE
   740:   {
   741:     `AST_struct (rstoken $1 $7, snd $2, $3, $6)
   742:   }
   743: 
   744:   | CSTRUCT NAME tvarlist opt_equal LBRACE struct_component_aster RBRACE
   745:   {
   746:     `AST_cstruct (rstoken $1 $7, snd $2, $3, $6)
   747:   }
   748: 
   749:   | CCLASS NAME tvarlist opt_equal LBRACE class_component_aster RBRACE
   750:   {
   751:     `AST_cclass (rstoken $1 $7, snd $2, $3, $6)
   752:   }
   753: 
   754:   | CLASS NAME tvarlist opt_equal compound
   755:   {
   756:     let sr = rsrange (slift $1) (fst $5) in
   757:     `AST_class (sr, snd $2, $3, snd $5)
   758:   }
   759: 
   760: struct_component_aster:
   761:   | struct_component struct_component_aster { $1 :: $2 }
   762:   | { [] }
   763: struct_component:
   764:   | NAME COLON expr SEMI { (snd $1,typecode_of_expr $3) }
   765: 
   766: 
   767: opt_name:
   768:   | NAME { snd $1 }
   769:   | {""}
   770: 
   771: class_component_aster:
   772:   | class_component class_component_aster { $1 :: $2 }
   773:   | { [] }
   774: class_component:
   775:   | VAR NAME COLON expr SEMI { `MemberVar (snd $2,typecode_of_expr $4,None) }
   776:   | VAL NAME COLON expr SEMI { `MemberVal (snd $2,typecode_of_expr $4,None) }
   777:   | FUNCTION NAME tvarlist COLON expr opt_cstring SEMI
   778:     { `MemberFun (snd $2,None,$3,typecode_of_expr $5,$6) }
   779:   | PROCEDURE NAME tvarlist COLON expr opt_cstring SEMI
   780:     { `MemberProc (snd $2,None,$3,typecode_of_expr $5,$6) }
   781:   | CTOR opt_name COLON expr opt_cstring SEMI
   782:     { `MemberCtor ($2,None,typecode_of_expr $4,$5) }
   783: 
End data section to src/flx_parse.mly[8]