| 444 | | * event set expressions: |
| 445 | | {{{ |
| 446 | | EventSetExpression |
| 447 | | : read(MemorySetExpression) |
| 448 | | | write(MemorySetExpression) |
| 449 | | | access(MemorySetExpression) |
| 450 | | | calls(FunctionCallExpression) |
| 451 | | | \nothing |
| 452 | | | \everything |
| 453 | | | ‘(’ EventSetExpression ‘)’ |
| 454 | | | EventSetExpression + EventSetExpression |
| 455 | | | EventSetExpression - EventSetExpression |
| 456 | | | EventSetExpression & EventSetExpression |
| 457 | | }}} |
| 458 | | * depends clause: `depends [condition] { event1, event2, ...}` |
| 459 | | * Example: |
| 460 | | {{{ |
| 461 | | depends { |
| 462 | | access(n) - (calls(inc(MemorySetExpression)) + calls(dec(MemorySetExpression))) |
| 463 | | } |
| 464 | | }}} |
| | 444 | * memory set action expressions: |
| | 445 | * `reads e`: `e` has type `Mem`. The function reads the memory units specified by `e`. |
| | 446 | * `assigns e`: `e` has type `Mem`. The function writes the memory units specified by `e`. |
| | 447 | * `calls f, <e1, ...>`: `f` has type `Function`. The function calls `f` with parameters `e1, ...`. |
| | 448 | * `nothing`: no action |
| | 449 | * `everything`: all actions |
| | 450 | * `ma_union(ma0, ma1)`: the union of the two memory set actions `ma0` and `ma1`. |
| | 451 | * `ma_comp(ma0, ma1)`: action complement (everything not in `ma1`) |
| | 452 | * `ma_isect(ma0, ma1)`: action intersection |
| | 453 | |
| | 454 | * depends clause: `depends [condition] action0, action1, action2, ... ` |
| | 455 | * Example: `depends ma_union(ma_comp(reads n, calls inc, <x>)), calls(dec, y))` |
| | 456 | |