Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / src / xbt / automaton / parserPromela.yacc
index 57468b6..bd27ac1 100644 (file)
@@ -1,16 +1,23 @@
-/* Copyright (c) 2012-2014. The SimGrid Team.
+/* Copyright (c) 2012-2021. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 %{
+#include "simgrid/config.h"
+#if !HAVE_UNISTD_H
+#define YY_NO_UNISTD_H /* hello Windows */
+#endif
 
 #include "automaton_lexer.yy.c"
 #include <xbt/automaton.h>
 
 void yyerror(const char *s);
 
+static void new_state(const char* id, int src);
+static void new_transition(const char* id, xbt_automaton_exp_label_t label);
+
 %}
 
 %union{
@@ -50,11 +57,11 @@ void yyerror(const char *s);
 
 %%
 
-automaton : NEVER LEFT_BRACE stateseq RIGHT_BRACE 
+automaton : NEVER LEFT_BRACE stateseq RIGHT_BRACE
           ;
 
-stateseq : 
-         | ID COLON { new_state($1, 1);} IF option FI SEMI_COLON stateseq 
+stateseq :
+         | ID COLON { new_state($1, 1);} IF option FI SEMI_COLON stateseq
          ;
 
 option :
@@ -62,13 +69,13 @@ option :
        ;
 
 exp : LEFT_PAR exp RIGHT_PAR { $$ = $2; }
-    | exp OR exp { $$ = new_label(0, $1, $3); }
-    | exp AND exp { $$ = new_label(1, $1, $3); }
-    | NOT exp { $$ = new_label(2, $2); }
-    | CASE_TRUE { $$ = new_label(4); }
-    | ID { $$ = new_label(3, $1); }
+    | exp OR exp { $$ = xbt_automaton_exp_label_new_or($1, $3); }
+    | exp AND exp { $$ = xbt_automaton_exp_label_new_and($1, $3); }
+    | NOT exp { $$ = xbt_automaton_exp_label_new_not($2); }
+    | CASE_TRUE { $$ = xbt_automaton_exp_label_new_one(); }
+    | ID { $$ = xbt_automaton_exp_label_new_predicat($1); }
     ;
+
 %%