@@ -648,36 +648,27 @@ assignments: assignment
648648 | assignments assignment
649649 ;
650650
651- assignment : assignment_head ' (' assignment_var ' )' BECOMES_Token formula ' ;'
651+ assignment : init_Token ' (' complex_identifier ' )' BECOMES_Token simple_expr ' ;'
652652 {
653- if (stack_expr ($1 ).id ()==ID_smv_next)
654- {
655- PARSER.module ->add_assign_next (
656- unary_exprt{ID_smv_next, std::move (stack_expr ($3 ))},
657- std::move (stack_expr ($6 )));
658- }
659- else
660- PARSER.module ->add_assign_init (std::move (stack_expr ($3 )), std::move (stack_expr ($6 )));
653+ PARSER.module ->add_assign_init (std::move (stack_expr ($3 )), std::move (stack_expr ($6 )));
661654 }
662- | assignment_var BECOMES_Token formula ' ;'
655+ | next_Token ' (' complex_identifier ' )' BECOMES_Token next_expr ' ;'
656+ {
657+ PARSER.module ->add_assign_next (
658+ unary_exprt{ID_smv_next, std::move (stack_expr ($3 ))},
659+ std::move (stack_expr ($6 )));
660+ }
661+ | complex_identifier BECOMES_Token formula ' ;'
663662 {
664663 PARSER.module ->add_assign_current (std::move (stack_expr ($1 )), std::move (stack_expr ($3 )));
665664 }
666665 ;
667666
668- assignment_var: variable_identifier
669- ;
670-
671- assignment_head:
672- init_Token { init ($$, ID_init); }
673- | next_Token { init ($$, ID_smv_next); }
674- ;
675-
676667defines: define
677668 | defines define
678669 ;
679670
680- define : assignment_var BECOMES_Token formula ' ;'
671+ define : complex_identifier BECOMES_Token formula ' ;'
681672 {
682673 PARSER.module ->add_define (std::move (stack_expr ($1 )), std::move (stack_expr ($3 )));
683674 }
@@ -724,6 +715,12 @@ word_constant:
724715 }
725716 ;
726717
718+ next_expr : basic_expr
719+ ;
720+
721+ simple_expr: basic_expr
722+ ;
723+
727724basic_expr : constant
728725 | identifier
729726 {
@@ -738,7 +735,7 @@ basic_expr : constant
738735 unary ($$, ID_member, $1 );
739736 stack_expr ($$).set (ID_component_name, stack_expr ($3 ).id ());
740737 }
741- | basic_expr ' (' basic_expr ' )'
738+ | basic_expr ' (' simple_expr ' )'
742739 {
743740 // Not in the NuSMV grammar.
744741 binary ($$, $1 , ID_index, $3 );
0 commit comments