Revision d50b0dc0
Added by Teme Kahsai about 9 years ago
src/parser_lustre.mly | ||
---|---|---|
43 | 43 |
let pop_node () = try node_stack := List.tl !node_stack with _ -> assert false |
44 | 44 |
let get_current_node () = try List.hd !node_stack with _ -> assert false |
45 | 45 |
|
46 |
let rec fby expr n init = |
|
47 |
if n<=1 then |
|
48 |
mkexpr (Expr_arrow (init, mkexpr (Expr_pre expr))) |
|
49 |
else |
|
50 |
mkexpr (Expr_arrow (init, mkexpr (Expr_pre (fby expr (n-1) init)))) |
|
51 |
|
|
46 | 52 |
%} |
47 | 53 |
|
48 | 54 |
%token <int> INT |
... | ... | |
403 | 409 |
| node_ident LPAR expr RPAR EVERY expr |
404 | 410 |
{mkexpr (Expr_appl ($1, $3, Some $6))} |
405 | 411 |
| node_ident LPAR tuple_expr RPAR |
406 |
{mkexpr (Expr_appl ($1, mkexpr (Expr_tuple (List.rev $3)), None))} |
|
412 |
{ |
|
413 |
let id=$1 in |
|
414 |
let args=List.rev $3 in |
|
415 |
match id, args with |
|
416 |
| "fbyn", [expr;n;init] -> |
|
417 |
let n = match n.expr_desc with |
|
418 |
| Expr_const (Const_int n) -> n |
|
419 |
| _ -> assert false |
|
420 |
in |
|
421 |
fby expr n init |
|
422 |
| _ -> mkexpr (Expr_appl ($1, mkexpr (Expr_tuple args), None)) |
|
423 |
} |
|
407 | 424 |
| node_ident LPAR tuple_expr RPAR EVERY expr |
408 |
{mkexpr (Expr_appl ($1, mkexpr (Expr_tuple (List.rev $3)), Some $6)) } |
|
425 |
{ |
|
426 |
let id=$1 in |
|
427 |
let args=List.rev $3 in |
|
428 |
let clock=$6 in |
|
429 |
if id="fby" then |
|
430 |
assert false (* TODO Ca veut dire quoi fby (e,n,init) every c *) |
|
431 |
else |
|
432 |
mkexpr (Expr_appl (id, mkexpr (Expr_tuple args), Some clock)) |
|
433 |
} |
|
409 | 434 |
|
410 | 435 |
/* Boolean expr */ |
411 | 436 |
| expr AND expr |
Also available in: Unified diff
sync