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: