let yyact = [|
(fun _ -> failwith "parser")
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'options) in
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'states) in
Obj.repr(
# 85 "src/ltl_to_acsl/yaparser.mly"
(
List.iter (fun(key, ids) -> begin
match key with
"init" -> List.iter (fun id -> try
(Hashtbl.find observed_states id).init <- True
with
Not_found -> begin Ltl_to_acsl_option.error "Error: no state '%s'\n" id; exit 1 end) ids
| "accept" -> List.iter (fun id -> try
(Hashtbl.find observed_states id).acceptation <- True
with Not_found -> begin Ltl_to_acsl_option.error "Error: no state '%s'\n" id; exit 1 end) ids
| oth -> begin Ltl_to_acsl_option.error "Error: unknown option '%s'\n" oth; exit 1 end
;
end) _1
;
let states=
Hashtbl.fold (fun _ st l ->
if st.acceptation=Undefined or st.init=Undefined then
begin
Ltl_to_acsl_option.fatal "Error: the state '%s' is used but never defined.\n" st.name
end;
st::l
) observed_states []
in
Data_for_ltl.setLtl_expressions observed_expressions;
Ltl_logic.setLtl_expressions observed_expressions;
let n=ref 0 in
let transitions = Ltl_logic.simplifyTrans _2 in
List.iter (fun t -> t.numt<-(!n); n:=!n+1) transitions;
((states , transitions),observed_vars,observed_funcs)
)
# 316 "src/ltl_to_acsl/yaparser.ml"
: (Promelaast.buchautomata * (string, string) Hashtbl.t * (string, string) Hashtbl.t)))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'options) in
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'option) in
Obj.repr(
# 121 "src/ltl_to_acsl/yaparser.mly"
( _1@[_2] )
# 324 "src/ltl_to_acsl/yaparser.ml"
: 'options))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'option) in
Obj.repr(
# 122 "src/ltl_to_acsl/yaparser.mly"
( [_1] )
# 331 "src/ltl_to_acsl/yaparser.ml"
: 'options))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 3 : string) in
let _4 = (Parsing.peek_val __caml_parser_env 1 : 'opt_identifiers) in
Obj.repr(
# 126 "src/ltl_to_acsl/yaparser.mly"
( (_2, _4) )
# 339 "src/ltl_to_acsl/yaparser.ml"
: 'option))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'opt_identifiers) in
let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 130 "src/ltl_to_acsl/yaparser.mly"
( _1@[_3] )
# 347 "src/ltl_to_acsl/yaparser.ml"
: 'opt_identifiers))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 131 "src/ltl_to_acsl/yaparser.mly"
( [_1] )
# 354 "src/ltl_to_acsl/yaparser.ml"
: 'opt_identifiers))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 1 : 'states) in
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
Obj.repr(
# 139 "src/ltl_to_acsl/yaparser.mly"
( _1@_2 )
# 362 "src/ltl_to_acsl/yaparser.ml"
: 'states))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'state) in
Obj.repr(
# 140 "src/ltl_to_acsl/yaparser.mly"
( _1 )
# 369 "src/ltl_to_acsl/yaparser.ml"
: 'states))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
let _3 = (Parsing.peek_val __caml_parser_env 1 : 'transitions) in
Obj.repr(
# 145 "src/ltl_to_acsl/yaparser.mly"
(
let start_state = fetch_and_create_state _1 in
List.map (fun(cross,stop_state) -> { start=start_state; stop=stop_state;
cross=cross; numt=(-1) }) _3 )
# 380 "src/ltl_to_acsl/yaparser.ml"
: 'state))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 2 : 'transitions) in
let _3 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
Obj.repr(
# 153 "src/ltl_to_acsl/yaparser.mly"
( _1@[_3] )
# 388 "src/ltl_to_acsl/yaparser.ml"
: 'transitions))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'transition) in
Obj.repr(
# 154 "src/ltl_to_acsl/yaparser.mly"
( [_1] )
# 395 "src/ltl_to_acsl/yaparser.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(
# 159 "src/ltl_to_acsl/yaparser.mly"
( (_2, fetch_and_create_state _5) )
# 403 "src/ltl_to_acsl/yaparser.ml"
: 'transition))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 160 "src/ltl_to_acsl/yaparser.mly"
( (PTrue, fetch_and_create_state _2) )
# 410 "src/ltl_to_acsl/yaparser.ml"
: 'transition))
; (fun __caml_parser_env ->
let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
Obj.repr(
# 167 "src/ltl_to_acsl/yaparser.mly"
( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PCallOrReturn _3 )
# 417 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
Obj.repr(
# 169 "src/ltl_to_acsl/yaparser.mly"
( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PCall _3 )
# 424 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
Obj.repr(
# 171 "src/ltl_to_acsl/yaparser.mly"
( if not (Hashtbl.mem observed_funcs _3) then Hashtbl.add observed_funcs _3 _3 ; PReturn _3 )
# 431 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
Obj.repr(
# 173 "src/ltl_to_acsl/yaparser.mly"
( PTrue )
# 437 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
Obj.repr(
# 175 "src/ltl_to_acsl/yaparser.mly"
( PFalse )
# 443 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'guard) in
Obj.repr(
# 177 "src/ltl_to_acsl/yaparser.mly"
( PNot _2 )
# 450 "src/ltl_to_acsl/yaparser.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(
# 179 "src/ltl_to_acsl/yaparser.mly"
( PAnd (_1,_3) )
# 458 "src/ltl_to_acsl/yaparser.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(
# 181 "src/ltl_to_acsl/yaparser.mly"
( POr (_1,_3) )
# 466 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 1 : 'guard) in
Obj.repr(
# 183 "src/ltl_to_acsl/yaparser.mly"
( _2 )
# 473 "src/ltl_to_acsl/yaparser.ml"
: 'guard))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'logic_relation) in
Obj.repr(
# 185 "src/ltl_to_acsl/yaparser.mly"
(
let id = get_fresh_ident () in
let (pred,exp) = _1 in
Hashtbl.add observed_expressions id
(exp, (Pretty_utils.sfprintf "%a" Cil.d_exp exp), pred);
Hashtbl.add observed_vars id id ;
PIndexedExp id
)
# 490 "src/ltl_to_acsl/yaparser.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(
# 203 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Req, Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Eq, _1 , _3 , Cil.intType)) ) )
# 501 "src/ltl_to_acsl/yaparser.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(
# 207 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rlt, Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Lt, _1 , _3 , Cil.intType)) ) )
# 512 "src/ltl_to_acsl/yaparser.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(
# 211 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rgt, Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Gt, _1 , _3 , Cil.intType)) ) )
# 523 "src/ltl_to_acsl/yaparser.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(
# 215 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rle, Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Le, _1 , _3 , Cil.intType)) ) )
# 534 "src/ltl_to_acsl/yaparser.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(
# 219 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rge, Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Ge, _1 , _3 , Cil.intType) )) )
# 545 "src/ltl_to_acsl/yaparser.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(
# 223 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rneq,Logic_utils.expr_to_term _1,
Logic_utils.expr_to_term _3),
Cil.new_exp(Cil_types.BinOp(Cil_types.Ne, _1 , _3 , Cil.intType) )) )
# 556 "src/ltl_to_acsl/yaparser.ml"
: 'logic_relation))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation) in
Obj.repr(
# 227 "src/ltl_to_acsl/yaparser.mly"
(
( Cil_types.Prel(Cil_types.Rneq,Logic_utils.expr_to_term _1,
Logic_const.term(Cil_types.TConst(Cil_types.CInt64(Int64.of_int 0,Cil_types.IInt,Some("0"))))
(Cil_types.Ctype Cil.intType)), _1) )
# 566 "src/ltl_to_acsl/yaparser.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(
# 235 "src/ltl_to_acsl/yaparser.mly"
(
Cil.new_exp (Cil_types.BinOp(Cil_types.PlusA, _1 , _3 , Cil.intType)) )
# 575 "src/ltl_to_acsl/yaparser.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(
# 237 "src/ltl_to_acsl/yaparser.mly"
(
Cil.new_exp (Cil_types.BinOp(Cil_types.MinusA, _1 , _3 , Cil.intType)) )
# 584 "src/ltl_to_acsl/yaparser.ml"
: 'arith_relation))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'arith_relation_mul) in
Obj.repr(
# 239 "src/ltl_to_acsl/yaparser.mly"
( _1 )
# 591 "src/ltl_to_acsl/yaparser.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(
# 244 "src/ltl_to_acsl/yaparser.mly"
(
Cil.new_exp (Cil_types.BinOp(Cil_types.Div, _1 , _3 , Cil.intType)) )
# 600 "src/ltl_to_acsl/yaparser.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(
# 246 "src/ltl_to_acsl/yaparser.mly"
(
Cil.new_exp (Cil_types.BinOp(Cil_types.Mult, _1 , _3 , Cil.intType)) )
# 609 "src/ltl_to_acsl/yaparser.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(
# 248 "src/ltl_to_acsl/yaparser.mly"
(
Cil.new_exp (Cil_types.BinOp(Cil_types.Mod, _1 , _3 , Cil.intType)) )
# 618 "src/ltl_to_acsl/yaparser.ml"
: 'arith_relation_mul))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_or_const) in
Obj.repr(
# 250 "src/ltl_to_acsl/yaparser.mly"
( _1 )
# 625 "src/ltl_to_acsl/yaparser.ml"
: 'arith_relation_mul))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 256 "src/ltl_to_acsl/yaparser.mly"
( Cil.new_exp (Cil_types.Const(Cil_types.CInt64(Int64.of_string _1,Cil_types.IInt, Some(_1)))))
# 632 "src/ltl_to_acsl/yaparser.ml"
: 'access_or_const))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
Obj.repr(
# 258 "src/ltl_to_acsl/yaparser.mly"
( Cil.new_exp (Cil_types.Lval(_1)) )
# 639 "src/ltl_to_acsl/yaparser.ml"
: 'access_or_const))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 1 : 'arith_relation) in
Obj.repr(
# 260 "src/ltl_to_acsl/yaparser.mly"
( _2 )
# 646 "src/ltl_to_acsl/yaparser.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(
# 268 "src/ltl_to_acsl/yaparser.mly"
(
let (my_host,my_offset) = (_1) in
let new_offset = Utils_parser.add_offset my_offset (Utils_parser.get_new_offset my_host my_offset _3) in
(my_host,new_offset)
)
# 662 "src/ltl_to_acsl/yaparser.ml"
: 'access))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_array) in
Obj.repr(
# 278 "src/ltl_to_acsl/yaparser.mly"
(_1)
# 669 "src/ltl_to_acsl/yaparser.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(
# 282 "src/ltl_to_acsl/yaparser.mly"
( Cil.addOffsetLval (Cil_types.Index (_3,Cil_types.NoOffset)) _1)
# 677 "src/ltl_to_acsl/yaparser.ml"
: 'access_array))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : 'access_leaf) in
Obj.repr(
# 283 "src/ltl_to_acsl/yaparser.mly"
(_1)
# 684 "src/ltl_to_acsl/yaparser.ml"
: 'access_array))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 0 : 'access) in
Obj.repr(
# 288 "src/ltl_to_acsl/yaparser.mly"
( Ltl_to_acsl_option.fatal "NOT YET IMPLEMENTED : *A dereferencement access." )
# 691 "src/ltl_to_acsl/yaparser.ml"
: 'access_leaf))
; (fun __caml_parser_env ->
let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
Obj.repr(
# 290 "src/ltl_to_acsl/yaparser.mly"
( Cil.var ( Data_for_ltl.get_varinfo _1) )
# 698 "src/ltl_to_acsl/yaparser.ml"
: 'access_leaf))
; (fun __caml_parser_env ->
let _2 = (Parsing.peek_val __caml_parser_env 1 : 'access) in
Obj.repr(
# 292 "src/ltl_to_acsl/yaparser.mly"
( _2 )
# 705 "src/ltl_to_acsl/yaparser.ml"
: 'access_leaf))
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]