X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7da2926d0733ff0683f31aeea176ce71e127264f..df0ad90cff845556fb7bb2a6fd6e2c10196f5776:/src/xbt/automaton/parserPromela.yacc diff --git a/src/xbt/automaton/parserPromela.yacc b/src/xbt/automaton/parserPromela.yacc index d5789f04d6..e41de7ee17 100644 --- a/src/xbt/automaton/parserPromela.yacc +++ b/src/xbt/automaton/parserPromela.yacc @@ -1,12 +1,12 @@ -/* Copyright (c) 2012-2014. The SimGrid Team. +/* Copyright (c) 2012-2019. 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" -#ifndef HAVE_UNISTD_H +#include "simgrid/config.h" +#if !HAVE_UNISTD_H #define YY_NO_UNISTD_H /* hello Windows */ #endif @@ -15,6 +15,9 @@ void yyerror(const char *s); +static void new_state(char* id, int src); +static void new_transition(char* id, xbt_automaton_exp_label_t label); + %} %union{ @@ -54,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 : @@ -66,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); } ; - + %%