@@ -303,7 +303,7 @@ modules : module
303
303
| modules module
304
304
;
305
305
306
- module : module_head sections
306
+ module : module_head module_body
307
307
;
308
308
309
309
module_name : STRING_Token
@@ -314,34 +314,71 @@ module_head: MODULE_Token module_name { new_module($2); }
314
314
| MODULE_Token module_name { new_module($2 ); } ' (' module_argument_list_opt ' )'
315
315
;
316
316
317
- sections : /* epsilon */
318
- | sections section
317
+ module_body : /* optional */
318
+ | module_body module_element
319
319
;
320
320
321
321
semi_opt : /* empty */
322
322
| ' ;'
323
323
;
324
324
325
- section : VAR_Token vardecls
325
+ module_element :
326
+ var_declaration
327
+ | define_declaration
328
+ | assign_constraint
329
+ | trans_constraint
330
+ | init_constraint
331
+ | invar_constraint
332
+ | fairness_constraint
333
+ | ctl_specification
334
+ | ltl_specification
335
+ | EXTERN_Token extern_var semi_opt
336
+ | EXTERN_Token
337
+ ;
338
+
339
+ var_declaration :
340
+ VAR_Token vardecls
326
341
| VAR_Token
327
- | INIT_Token formula semi_opt { PARSER.module->add_init (stack_expr($2 ), stack_expr($1 ).source_location()); }
328
- | INIT_Token
329
- | TRANS_Token formula semi_opt { PARSER.module->add_trans (stack_expr($2 ), stack_expr($1 ).source_location()); }
330
- | TRANS_Token
331
- | SPEC_Token formula semi_opt { PARSER.module->add_ctlspec (stack_expr($2 ), stack_expr($1 ).source_location()); }
332
- | SPEC_Token
333
- | LTLSPEC_Token formula semi_opt { PARSER.module->add_ltlspec (stack_expr($2 ), stack_expr($1 ).source_location()); }
334
- | LTLSPEC_Token
335
- | ASSIGN_Token assignments
336
- | ASSIGN_Token
337
- | DEFINE_Token defines
342
+ ;
343
+
344
+ define_declaration :
345
+ DEFINE_Token defines
338
346
| DEFINE_Token
339
- | INVAR_Token formula semi_opt { PARSER.module->add_invar (stack_expr($2 ), stack_expr($1 ).source_location()); }
347
+ ;
348
+
349
+ assign_constraint :
350
+ ASSIGN_Token assignments
351
+ | ASSIGN_Token
352
+ ;
353
+
354
+ trans_constraint :
355
+ TRANS_Token formula semi_opt { PARSER.module->add_trans (stack_expr($2 ), stack_expr($1 ).source_location()); }
356
+ | TRANS_Token
357
+ ;
358
+
359
+ init_constraint :
360
+ INIT_Token formula semi_opt { PARSER.module->add_init (stack_expr($2 ), stack_expr($1 ).source_location()); }
361
+ | INIT_Token
362
+ ;
363
+
364
+ invar_constraint :
365
+ INVAR_Token formula semi_opt { PARSER.module->add_invar (stack_expr($2 ), stack_expr($1 ).source_location()); }
340
366
| INVAR_Token
341
- | FAIRNESS_Token formula semi_opt { PARSER.module->add_fairness (stack_expr($2 ), stack_expr($1 ).source_location()); }
367
+ ;
368
+
369
+ fairness_constraint :
370
+ FAIRNESS_Token formula semi_opt { PARSER.module->add_fairness (stack_expr($2 ), stack_expr($1 ).source_location()); }
342
371
| FAIRNESS_Token
343
- | EXTERN_Token extern_var semi_opt
344
- | EXTERN_Token
372
+ ;
373
+
374
+ ctl_specification :
375
+ SPEC_Token formula semi_opt { PARSER.module->add_ctlspec (stack_expr($2 ), stack_expr($1 ).source_location()); }
376
+ | SPEC_Token
377
+ ;
378
+
379
+ ltl_specification :
380
+ LTLSPEC_Token formula semi_opt { PARSER.module->add_ltlspec (stack_expr($2 ), stack_expr($1 ).source_location()); }
381
+ | LTLSPEC_Token
345
382
;
346
383
347
384
extern_var : variable_name EQUAL_Token QUOTE_Token
0 commit comments