let yyact = [|
  (fun _ -> failwith "parser")
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 2 : 'states) in
    Obj.repr(
# 81 "src/aorai/promelaparser_withexps.mly"
                                                                 ( 
            let states=
              Hashtbl.fold (fun _ st l -> 
                if st.acceptation=Undefined or st.init=Undefined then
                  begin
                    Format.print_string ("Error: the state '"^(st.name)^"' is used but never defined.\n");
                    exit 1
                  end;
                st::l
              ) observed_states []
            in
            (states , _3)
        )
# 300 "src/aorai/promelaparser_withexps.ml"
               : Promelaast.parsed_automaton))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 3 : 'states) in
    Obj.repr(
# 95 "src/aorai/promelaparser_withexps.mly"
                                                 (
            let states=
              Hashtbl.fold (fun _ st l -> 
                if st.acceptation=Undefined or st.init=Undefined then
                  begin
                    Aorai_option.abort 
                      "Error: state %s is used bug never defined" st.name
                  end;
                st::l
              ) observed_states []
            in
            (states , _3) )
# 318 "src/aorai/promelaparser_withexps.ml"
               : Promelaast.parsed_automaton))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'states) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
    Obj.repr(
# 110 "src/aorai/promelaparser_withexps.mly"
                                         ( _1@_3 )
# 326 "src/aorai/promelaparser_withexps.ml"
               : 'states))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
    Obj.repr(
# 111 "src/aorai/promelaparser_withexps.mly"
         ( _1 )
# 333 "src/aorai/promelaparser_withexps.ml"
               : 'states))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'state_labels) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'state_body) in
    Obj.repr(
# 115 "src/aorai/promelaparser_withexps.mly"
                                  (
          let (stl,trans)=_1 in
          let (trl,force_final)=_2 in
            if force_final then
              begin
                List.iter (fun s -> 
                  try 
                    (Hashtbl.find observed_states s.name).acceptation <- True
                  with
                    | Not_found -> assert false 
                (* This state has to be in the hashtable -- by construction *)
                ) stl
              end;
            if trl=[] then
              trans 
            else
              let tr_list=
                List.fold_left (fun l1 (cr,stop_st)  -> 
                  List.fold_left (fun l2 st -> 
                    {start=st;stop=stop_st;cross=Seq (to_seq cr);numt=(-1)}::l2
                  ) l1 stl
                ) [] trl
              in
              (List.rev tr_list)@trans
        )
# 365 "src/aorai/promelaparser_withexps.ml"
               : 'state))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'label) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'state_labels) in
    Obj.repr(
# 143 "src/aorai/promelaparser_withexps.mly"
                             ( 
            let (stl1,trl1)=_1 in
            let (stl2,trl2)=_2 in
              (stl1@stl2,trl1@trl2) 
        )
# 377 "src/aorai/promelaparser_withexps.ml"
               : 'state_labels))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'label) in
    Obj.repr(
# 148 "src/aorai/promelaparser_withexps.mly"
         ( _1 )
# 384 "src/aorai/promelaparser_withexps.ml"
               : 'state_labels))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : string) in
    Obj.repr(
# 152 "src/aorai/promelaparser_withexps.mly"
                                      (
          begin
            (* Step 0 : trans is the set of new transitions and old 
               is the description of the current state *)

            let trans = ref [] in
            (* Promela Label is a state. According to its name, 
               we will try to give him its properties (init / accept) *)

            (* Firstly, if this state is still referenced, 
               then we get it back. Else, we make a new "empty" state *)

            let old= 
              try  
                Hashtbl.find observed_states _1
              with
                | Not_found -> 
                    let s = Data_for_aorai.new_state _1 in
                    Hashtbl.add observed_states _1 s;
                    s
            in
            (* Step 1 : setting up the acceptance status *)
            (* Default status : Non acceptation state *)
             old.acceptation <- False;
            
            (* Accept_all state means acceptance state with a 
               reflexive transition without cross condition *)

            (* This case is not exclusive with the following. 
               Acceptation status is set in this last. *)

            if (String.length _1>=10) && 
              (String.compare (String.sub _1 0 10) "accept_all")=0 
            then 
              trans:=
                {start=old;stop=old;cross=Seq (to_seq PTrue);numt=(-1)}::!trans;
            
            (* If the name includes accept then this state is 
               an acceptation one. *)

            if (String.length _1>=7) && 
              (String.compare (String.sub _1 0 7) "accept_")=0 
            then
              old.acceptation <- True;

            (* Step 2 : setting up the init status *)
            (* If the state name ended with "_init" then 
               it is an initial state. Else, it is not. *)

            if (String.length _1>=5) && 
              (String.compare 
                 (String.sub _1 ((String.length _1)-5) 5) "_init" ) = 0
            then
              old.init <- True
            else
              old.init <- False;
            
            ([old],!trans)
          end
        )
# 443 "src/aorai/promelaparser_withexps.ml"
               : 'label))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'transitions) in
    Obj.repr(
# 209 "src/aorai/promelaparser_withexps.mly"
                                            ( (_2,false) )
# 450 "src/aorai/promelaparser_withexps.ml"
               : 'state_body))
; (fun __caml_parser_env ->
    Obj.repr(
# 210 "src/aorai/promelaparser_withexps.mly"
                ( ([],false) )
# 456 "src/aorai/promelaparser_withexps.ml"
               : 'state_body))
; (fun __caml_parser_env ->
    Obj.repr(
# 211 "src/aorai/promelaparser_withexps.mly"
                 ( ([],true) )
# 462 "src/aorai/promelaparser_withexps.ml"
               : 'state_body))
; (fun __caml_parser_env ->
    Obj.repr(
# 212 "src/aorai/promelaparser_withexps.mly"
                                                            ( ([],true) )
# 468 "src/aorai/promelaparser_withexps.ml"
               : 'state_body))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'transitions) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
    Obj.repr(
# 217 "src/aorai/promelaparser_withexps.mly"
                                 ( _1@[_2] )
# 476 "src/aorai/promelaparser_withexps.ml"
               : 'transitions))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
    Obj.repr(
# 218 "src/aorai/promelaparser_withexps.mly"
              ( [_1] )
# 483 "src/aorai/promelaparser_withexps.ml"
               : 'transitions))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : 'guard) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 223 "src/aorai/promelaparser_withexps.mly"
                                                       (
          let s=
            try
              Hashtbl.find observed_states _5
            with
                Not_found -> 
                  let r = Data_for_aorai.new_state _5 in
                  Hashtbl.add observed_states _5 r;
                  r
          in
          (_2,s)
        )
# 502 "src/aorai/promelaparser_withexps.ml"
               : 'transition))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 238 "src/aorai/promelaparser_withexps.mly"
                          ( POr(PCall (_1,None), PReturn _1) )
# 509 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 239 "src/aorai/promelaparser_withexps.mly"
                         ( PCall (_1,None) )
# 516 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 240 "src/aorai/promelaparser_withexps.mly"
                           ( PReturn _1 )
# 523 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    Obj.repr(
# 241 "src/aorai/promelaparser_withexps.mly"
                ( PTrue )
# 529 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    Obj.repr(
# 242 "src/aorai/promelaparser_withexps.mly"
                 ( PFalse )
# 535 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 243 "src/aorai/promelaparser_withexps.mly"
                     ( PNot _2 )
# 542 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'guard) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 244 "src/aorai/promelaparser_withexps.mly"
                           ( PAnd (_1,_3) )
# 550 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'guard) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
    Obj.repr(
# 245 "src/aorai/promelaparser_withexps.mly"
                          ( POr (_1,_3) )
# 558 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'guard) in
    Obj.repr(
# 246 "src/aorai/promelaparser_withexps.mly"
                                       ( _2 )
# 565 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'logic_relation) in
    Obj.repr(
# 247 "src/aorai/promelaparser_withexps.mly"
                         ( _1 )
# 572 "src/aorai/promelaparser_withexps.ml"
               : 'guard))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 251 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Eq, _1, _3) )
# 580 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 252 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Lt, _1, _3) )
# 588 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 253 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Gt, _1, _3) )
# 596 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 254 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Le, _1, _3) )
# 604 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 255 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Ge, _1, _3) )
# 612 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 256 "src/aorai/promelaparser_withexps.mly"
                                             ( PRel(Neq,_1, _3) )
# 620 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 257 "src/aorai/promelaparser_withexps.mly"
                  ( PRel(Neq,_1, PCst(IntConstant "0")) )
# 627 "src/aorai/promelaparser_withexps.ml"
               : 'logic_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 263 "src/aorai/promelaparser_withexps.mly"
            ( PBinop(Badd, _1 , _3))
# 635 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
    Obj.repr(
# 265 "src/aorai/promelaparser_withexps.mly"
            ( PBinop(Bsub,_1,_3) )
# 643 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation_mul) in
    Obj.repr(
# 266 "src/aorai/promelaparser_withexps.mly"
                      ( _1 )
# 650 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 272 "src/aorai/promelaparser_withexps.mly"
            ( PBinop(Bdiv,_1,_3) )
# 658 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 274 "src/aorai/promelaparser_withexps.mly"
            ( PBinop(Bmul,_1,_3) )
# 666 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'arith_relation_mul) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 276 "src/aorai/promelaparser_withexps.mly"
            ( PBinop(Bmod,_1,_3) )
# 674 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
    Obj.repr(
# 277 "src/aorai/promelaparser_withexps.mly"
                   ( _1 )
# 681 "src/aorai/promelaparser_withexps.ml"
               : 'arith_relation_mul))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 281 "src/aorai/promelaparser_withexps.mly"
                      ( PCst(IntConstant _1) )
# 688 "src/aorai/promelaparser_withexps.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 283 "src/aorai/promelaparser_withexps.mly"
            ( PUnop (UminusPCst (IntConstant _2)) )
# 695 "src/aorai/promelaparser_withexps.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
    Obj.repr(
# 284 "src/aorai/promelaparser_withexps.mly"
          ( _1 )
# 702 "src/aorai/promelaparser_withexps.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'arith_relation) in
    Obj.repr(
# 285 "src/aorai/promelaparser_withexps.mly"
                                                ( _2 )
# 709 "src/aorai/promelaparser_withexps.ml"
               : 'access_or_const))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'access) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 289 "src/aorai/promelaparser_withexps.mly"
                                    ( PField (_1,_3) )
# 717 "src/aorai/promelaparser_withexps.ml"
               : 'access))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_array) in
    Obj.repr(
# 290 "src/aorai/promelaparser_withexps.mly"
                (_1)
# 724 "src/aorai/promelaparser_withexps.ml"
               : 'access))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : 'access_array) in
    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'access_or_const) in
    Obj.repr(
# 294 "src/aorai/promelaparser_withexps.mly"
     ( PArrget(_1,_3) )
# 732 "src/aorai/promelaparser_withexps.ml"
               : 'access_array))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_leaf) in
    Obj.repr(
# 295 "src/aorai/promelaparser_withexps.mly"
                   (_1)
# 739 "src/aorai/promelaparser_withexps.ml"
               : 'access_array))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
    Obj.repr(
# 298 "src/aorai/promelaparser_withexps.mly"
                              ( PUnop(Ustar,_2) )
# 746 "src/aorai/promelaparser_withexps.ml"
               : 'access_leaf))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 299 "src/aorai/promelaparser_withexps.mly"
                                                        ( PPrm(_1,_4) )
# 754 "src/aorai/promelaparser_withexps.ml"
               : 'access_leaf))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 300 "src/aorai/promelaparser_withexps.mly"
                 ( PVar _1 )
# 761 "src/aorai/promelaparser_withexps.ml"
               : 'access_leaf))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'access) in
    Obj.repr(
# 301 "src/aorai/promelaparser_withexps.mly"
                                        ( _2 )
# 768 "src/aorai/promelaparser_withexps.ml"
               : 'access_leaf))
(* Entry promela *)
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]