@@ -146,46 +146,115 @@ static void new_module(YYSTYPE &module)
146146
147147%}
148148
149- %token AG_Token " AG"
150- %token AX_Token " AX"
151- %token AF_Token " AF"
152- %token EG_Token " EG"
153- %token EX_Token " EX"
154- %token EF_Token " EF"
155-
156- %token G_Token " G"
157- %token X_Token " X"
158- %token F_Token " F"
159- %token R_Token " R"
160- %token U_Token " U"
161-
162- %token INIT_Token " INIT"
163- %token TRANS_Token " TRANS"
164- %token SPEC_Token " SPEC"
165- %token LTLSPEC_Token " LTLSPEC"
166- %token VAR_Token " VAR"
167- %token DEFINE_Token " DEFINE"
168- %token ASSIGN_Token " ASSIGN"
169- %token INVAR_Token " INVAR"
170- %token FAIRNESS_Token " FAIRNESS"
171- %token MODULE_Token " MODULE"
172- %token ARRAY_Token " array"
173- %token OF_Token " of"
174- %token DOTDOT_Token " .."
175- %token BOOLEAN_Token " boolean"
176- %token EXTERN_Token " EXTERN"
149+ /* Keywords from page 7 */
150+ /* https://nusmv.fbk.eu/userman/v27/nusmv.pdf */
151+ %token MODULE_Token " MODULE"
152+ %token DEFINE_Token " DEFINE"
153+ %token MDEFINE_Token " MDEFINE"
154+ %token CONSTANTS_Token " CONSTANTS"
155+ %token VAR_Token " VAR"
156+ %token IVAR_Token " IVAR"
157+ %token FROZENVAR_Token " FROZENVAR"
158+ %token INIT_Token " INIT"
159+ %token TRANS_Token " TRANS"
160+ %token INVAR_Token " INVAR"
161+ %token SPEC_Token " SPEC"
162+ %token CTLSPEC_Token " CTLSPEC"
163+ %token LTLSPEC_Token " LTLSPEC"
164+ %token PSLSPEC_Token " PSLSPEC"
165+ %token COMPUTE_Token " COMPUTE"
166+ %token NAME_Token " NAME"
167+ %token INVARSPEC_Token " INVARSPEC"
168+ %token FAIRNESS_Token " FAIRNESS"
169+ %token JUSTICE_Token " JUSTICE"
170+ %token COMPASSION_Token " COMPASSION"
171+ %token ISA_Token " ISA"
172+ %token ASSIGN_Token " ASSIGN"
173+ %token CONSTRAINT_Token " CONSTRAINT"
174+ %token SIMPWFF_Token " SIMPWFF"
175+ %token CTLWFF_Token " CTLWFF"
176+ %token LTLWFF_Token " LTLWFF"
177+ %token PSLWFF_Token " PSLWFF"
178+ %token COMPWFF_Token " COMPWFF"
179+ %token IN_Token " IN"
180+ %token MIN_Token " MIN"
181+ %token MAX_Token " MAX"
182+ %token MIRROR_Token " MIRROR"
183+ %token PRED_Token " PRED"
184+ %token PREDICATES_Token " PREDICATES"
185+
186+ %token process_Token " process"
187+ %token array_Token " array"
188+ %token of_Token " of"
189+ %token boolean_Token " boolean"
190+ %token integer_Token " integer"
191+ %token real_Token " real"
192+ %token word_Token " word"
193+ %token word1_Token " word1"
194+ %token bool_Token " bool"
195+ %token signed_Token " signed"
196+ %token unsigned_Token " unsigned"
197+ %token extend_Token " extend"
198+ %token resize_Token " resize"
199+ %token sizeof_Token " sizeof"
200+ %token uwconst_Token " uwconst"
201+ %token swconst_Token " swconst"
202+
203+ %token EX_Token " EX"
204+ %token AX_Token " AX"
205+ %token EF_Token " EF"
206+ %token AF_Token " AF"
207+ %token EG_Token " EG"
208+ %token AG_Token " AG"
209+ %token E_Token " E"
210+ %token F_Token " F"
211+ %token O_Token " O"
212+ %token G_Token " G"
213+ %token H_Token " H"
214+ %token X_Token " X"
215+ %token Y_Token " Y"
216+ %token Z_Token " Z"
217+ %token A_Token " A"
218+ %token U_Token " U"
219+ %token S_Token " S"
220+ %token V_Token " V"
221+ %token T_Token " T"
222+ %token BU_Token " BU"
223+ %token EBF_Token " EBF"
224+ %token ABF_Token " ABF"
225+ %token EBG_Token " EBG"
226+ %token ABG_Token " ABG"
227+
228+ %token case_Token " case"
229+ %token esac_Token " esac"
230+ %token mod_Token " mod"
231+ %token next_Token " next"
232+ %token init_Token " init"
233+ %token union_Token " union"
234+ %token in_Token " in"
235+ %token xor_Token " xor"
236+ %token xnor_Token " xnor"
237+ %token self_Token " self"
238+ %token TRUE_Token " TRUE"
239+ %token FALSE_Token " FALSE"
240+ %token count_Token " count"
241+ %token abs_Token " abs"
242+ %token max_Token " max"
243+ %token min_Token " min"
244+
245+ /* Not in the NuSMV manual */
246+ %token EXTERN_Token " EXTERN"
247+ %token switch_Token " switch"
248+ %token notin_Token " notin"
249+ %token R_Token " R"
177250
251+ %token DOTDOT_Token " .."
178252%token IMPLIES_Token " ->"
179253%token EQUIV_Token " <->"
180254%token IF_Token " ?"
181- %token XOR_Token " XOR"
182255%token OR_Token " |"
183256%token AND_Token " &"
184257%token NOT_Token " !"
185- %token MOD_Token " mod"
186- %token UNION_Token " union"
187- %token IN_Token " in"
188- %token NOTIN_Token " notin"
189258%token DOT_Token " ."
190259%token PLUS_Token " +"
191260%token MINUS_Token " -"
@@ -198,35 +267,28 @@ static void new_module(YYSTYPE &module)
198267
199268%token INC_Token
200269%token DEC_Token
201- %token NEXT_Token " next"
202- %token CASE_Token " case"
203- %token ESAC_Token " esac"
204270%token BECOMES_Token " :="
205271%token ADD_Token
206272%token SUB_Token
207- %token SWITCH_Token " switch"
208- %token init_Token " init"
209273
210274%token STRING_Token " string"
211275%token QSTRING_Token " quoted string"
212276%token QUOTE_Token " '"
213277%token NUMBER_Token " number"
214- %token FALSE_Token " false"
215- %token TRUE_Token " true"
216278
217279/* operator precedence, low to high */
218280%right IMPLIES_Token
219281%left EQUIV_Token
220282%left IF_Token
221- %left XOR_Token
283+ %left xor_Token
222284%left OR_Token
223285%left AND_Token
224286%left NOT_Token
225287%left EX_Token AX_Token EF_Token AF_Token EG_Token AG_Token E_Token A_Token U_Token R_Token F_Token G_Token X_Token
226288%left EQUAL_Token NOTEQUAL_Token LT_Token GT_Token LE_Token GE_Token
227- %left UNION_Token
289+ %left union_Token
228290%left IN_Token NOTIN_Token
229- %left MOD_Token /* Precedence from CMU SMV, different from NuSMV */
291+ %left mod_Token /* Precedence from CMU SMV, different from NuSMV */
230292%left PLUS_Token MINUS_Token
231293%left TIMES_Token DIVIDE_Token
232294%left UMINUS /* supplies precedence for unary minus */
@@ -318,7 +380,7 @@ module_argument_list_opt: /* empty */
318380 | module_argument_list
319381 ;
320382
321- type : ARRAY_Token NUMBER_Token DOTDOT_Token NUMBER_Token OF_Token type
383+ type : array_Token NUMBER_Token DOTDOT_Token NUMBER_Token of_Token type
322384 {
323385 init ($$, ID_array);
324386 int start=atoi(stack_expr($2 ).id().c_str());
@@ -334,7 +396,7 @@ type : ARRAY_Token NUMBER_Token DOTDOT_Token NUMBER_Token OF_Token type
334396 stack_type ($$).set(ID_offset, start);
335397 stack_type ($$).add_subtype()=stack_type($6 );
336398 }
337- | BOOLEAN_Token { init($$ , ID_bool); }
399+ | boolean_Token { init($$ , ID_bool); }
338400 | ' {' enum_list ' }' { $$ =$2 ; }
339401 | NUMBER_Token DOTDOT_Token NUMBER_Token
340402 {
@@ -469,7 +531,7 @@ assignment_var: variable_name
469531 ;
470532
471533assignment_head: init_Token { init ($$, ID_init); }
472- | NEXT_Token { init ($$, ID_smv_next); }
534+ | next_Token { init ($$, ID_smv_next); }
473535 ;
474536
475537defines: define
@@ -516,7 +578,7 @@ formula : term
516578 ;
517579
518580term : variable_name
519- | NEXT_Token ' (' term ' )' { init ($$, ID_smv_next); mto ($$, $3 ); }
581+ | next_Token ' (' term ' )' { init ($$, ID_smv_next); mto ($$, $3 ); }
520582 | ' (' formula ' )' { $$=$2 ; }
521583 | ' {' formula_list ' }' { $$=$2 ; stack_expr ($$).id (" smv_nondet_choice" ); }
522584 | INC_Token ' (' term ' )' { init ($$, " inc" ); mto ($$, $3 ); }
@@ -526,20 +588,20 @@ term : variable_name
526588 | NUMBER_Token { init ($$, ID_constant); stack_expr ($$).set (ID_value, stack_expr ($1 ).id ()); stack_expr ($$).type ()=integer_typet (); }
527589 | TRUE_Token { init ($$, ID_constant); stack_expr ($$).set (ID_value, ID_true); stack_expr ($$).type ()=typet (ID_bool); }
528590 | FALSE_Token { init ($$, ID_constant); stack_expr ($$).set (ID_value, ID_false); stack_expr ($$).type ()=typet (ID_bool); }
529- | CASE_Token cases ESAC_Token { $$=$2 ; }
591+ | case_Token cases esac_Token { $$=$2 ; }
530592 | term IF_Token term ' :' term %prec IF_Token
531593 { init ($$, ID_if); mto ($$, $1 ); mto ($$, $3 ); mto ($$, $5 ); }
532- | SWITCH_Token ' (' variable_name ' )' ' {' switches ' }' { init ($$, ID_switch); mto ($$, $3 ); mto ($$, $6 ); }
594+ | switch_Token ' (' variable_name ' )' ' {' switches ' }' { init ($$, ID_switch); mto ($$, $3 ); mto ($$, $6 ); }
533595 | MINUS_Token term %prec UMINUS
534596 { init ($$, ID_unary_minus); mto ($$, $2 ); }
535- | term MOD_Token term { binary ($$, $1 , ID_mod, $3 ); }
597+ | term mod_Token term { binary ($$, $1 , ID_mod, $3 ); }
536598 | term TIMES_Token term { binary ($$, $1 , ID_mult, $3 ); }
537599 | term DIVIDE_Token term { binary ($$, $1 , ID_div, $3 ); }
538600 | term PLUS_Token term { binary ($$, $1 , ID_plus, $3 ); }
539601 | term MINUS_Token term { binary ($$, $1 , ID_minus, $3 ); }
540602 | term EQUIV_Token term { binary ($$, $1 , ID_smv_iff, $3 ); }
541603 | term IMPLIES_Token term { binary ($$, $1 , ID_implies, $3 ); }
542- | term XOR_Token term { j_binary ($$, $1 , ID_xor, $3 ); }
604+ | term xor_Token term { j_binary ($$, $1 , ID_xor, $3 ); }
543605 | term OR_Token term { j_binary ($$, $1 , ID_or, $3 ); }
544606 | term AND_Token term { j_binary ($$, $1 , ID_and, $3 ); }
545607 | NOT_Token term { init ($$, ID_not); mto ($$, $2 ); }
@@ -564,7 +626,7 @@ term : variable_name
564626 | term LE_Token term { binary ($$, $1 , ID_le, $3 ); }
565627 | term GT_Token term { binary ($$, $1 , ID_gt, $3 ); }
566628 | term GE_Token term { binary ($$, $1 , ID_ge, $3 ); }
567- | term UNION_Token term { binary ($$, $1 , ID_smv_union, $3 ); }
629+ | term union_Token term { binary ($$, $1 , ID_smv_union, $3 ); }
568630 | term IN_Token term { binary ($$, $1 , ID_smv_setin, $3 ); }
569631 | term NOTIN_Token term { binary ($$, $1 , ID_smv_setnotin, $3 ); }
570632 ;
0 commit comments