451: statement: 452: | binding_definition { $1 } 453: | declarative { $1 } 454: | executable { $1 } 455: | inclusion { $1 } 456: | directive { $1 } 457: | publish { $1} 458: | comment { $1 } 459: | null_statement { $1 } 460: | user_statement { $1 } 461: 462: comment: 463: | COMMENT_KEYWORD STRING SEMI { `AST_nop (rstoken $1 $3, snd $2) } 464: 465: binding_definition: 466: | abstract_type { $1 } 467: | const_def { $1 } 468: | binding_header { $1 } 469: | export_statement { $1 } 470: 471: publish: 472: /* 473: | PUBLISH STRING binding_definition 474: { `AST_public (slift $1, snd $2, $3) } 475: 476: | PUBLISH STRING declarative 477: { `AST_public (slift $1, snd $2, $3) } 478: */ 479: 480: | PRIVATE declarative 481: { `AST_private (slift $1, $2) } 482: 483: | PRIVATE binding_definition 484: { `AST_private (slift $1, $2) } 485: 486: declarative: 487: | function_definition { $1 } 488: | object_definition { $1 } 489: | procedure_definition { $1 } 490: | module_definition { $1 } 491: | union_decl { $1 } 492: | struct_decl { $1 } 493: | type_alias { $1 } 494: 495: directive: 496: | open_decl { $1 } 497: | use_decl { $1 } 498: | regdef { $1 } 499: | glr_production { $1 } 500: | macro_definition { $1 } 501: 502: executable: 503: | var_def { $1 } 504: | val_def { $1 } 505: | call { $1 } 506: | svc { $1 } 507: | return { $1 } 508: | ifgoto_stmt { $1 } 509: /* | whilst_stmt { $1 } */ 510: | todo { $1 } 511: | assignment { $1 } 512: | inline_cpp { $1 } 513: | goto_statement { $1 } 514: | label_statement { $1 } 515: | assert_statement { $1 } 516: 517: null_statement: 518: | SEMI { `AST_nop (rstoken $1 $1,"") } 519: 520: user_statement: 521: | USER_STATEMENT_DRIVER 522: { 523: let srt, kw, f = $1 in 524: let sr = slift srt in 525: (* 526: print_endline ("USER STATEMENT KEYWORD " ^ kw); 527: *) 528: f () 529: } 530: 531: inclusion: 532: | INCLUDE STRING SEMI 533: { 534: let sr = rstoken $1 $3 in 535: `AST_include (sr, snd $2) 536: } 537: