5.16.4. Statement

Start data section to src/flx_parse.mly[4 /35 ] Next Prev First Last
   498: statement:
   499:   | binding_definition { $1 }
   500:   | declarative { $1 }
   501:   | executable { $1 }
   502:   | inclusion { $1 }
   503:   | directive { $1 }
   504:   | publish { $1}
   505:   | comment { $1 }
   506:   | null_statement { $1 }
   507:   | user_statement { $1 }
   508:   | cparse { $1 }
   509: 
   510: comment:
   511:   | COMMENT_KEYWORD STRING SEMI { `AST_nop (rstoken $1 $3, snd $2) }
   512: 
   513: binding_definition:
   514:   | abstract_type { $1 }
   515:   | const_def { $1 }
   516:   | binding_header { $1 }
   517:   | export_statement { $1 }
   518: 
   519: publish:
   520:   /*
   521:   | PUBLISH STRING binding_definition
   522:     { `AST_public (slift $1, snd $2, $3) }
   523: 
   524:   | PUBLISH STRING declarative
   525:     { `AST_public (slift $1, snd $2, $3) }
   526:   */
   527: 
   528:   | PRIVATE declarative
   529:     { `AST_private (slift $1, $2) }
   530: 
   531:   | PRIVATE binding_definition
   532:     { `AST_private (slift $1, $2) }
   533: 
   534:   | PRIVATE var_def
   535:     { `AST_private (slift $1, $2) }
   536: 
   537:   | PRIVATE val_def
   538:     { `AST_private (slift $1, $2) }
   539: 
   540: 
   541: declarative:
   542:   | function_definition { $1 }
   543:   | object_definition { $1 }
   544:   | procedure_definition { $1 }
   545:   | module_definition { $1 }
   546:   | union_decl { $1 }
   547:   | struct_decl { $1 }
   548:   | type_alias { $1 }
   549: 
   550: directive:
   551:   | open_decl { $1 }
   552:   | use_decl { $1 }
   553:   | regdef { $1 }
   554:   | glr_production { $1 }
   555:   | macro_definition { $1 }
   556: 
   557: executable:
   558:   | var_def { $1 }
   559:   | val_def { $1 }
   560:   | call { $1 }
   561:   | svc { $1 }
   562:   | return { $1 }
   563:   | ifgoto_stmt { $1 }
   564: /*  | whilst_stmt { $1 } */
   565:   | todo { $1 }
   566:   | assignment { $1 }
   567:   | inline_cpp { $1 }
   568:   | goto_statement { $1 }
   569:   | label_statement { $1 }
   570:   | assert_statement { $1 }
   571: 
   572: null_statement:
   573:   | SEMI                    { `AST_nop (rstoken $1 $1,"") }
   574: 
   575: user_statement:
   576:   | USER_STATEMENT_DRIVER
   577:     {
   578:       let srt, kw, f = $1 in
   579:       let sr = slift srt in
   580:       (*
   581:       print_endline ("USER STATEMENT KEYWORD " ^ kw);
   582:       *)
   583:       f ()
   584:     }
   585: 
   586: inclusion:
   587:   | INCLUDE STRING SEMI
   588:     {
   589:       let sr = rstoken $1 $3 in
   590:       `AST_include (sr, snd $2)
   591:     }
   592: 
End data section to src/flx_parse.mly[4]