1 /* $NetBSD: test.trans,v 1.4 1994/06/29 06:41:18 cgd Exp $ */
2
3 *PROTOCOL test
4
5 *INCLUDE
6
7 {
8 #include "test_def.h"
9 }
10
11 *PCB test_pcbstruct SYNONYM P
12
13 *STATES
14
15 STATE_A
16 STATE_B
17 STATE_C
18 ALL_STATES = [STATE_A, STATE_B, STATE_C]
19
20 *EVENTS { int ev_all; } SYNONYM E
21
22 EV_1 { char *ev1_char; }
23 EV_2 { int ev2_int; char ev2_char; }
24 EV_3
25 EV_4 { struct blah *ev4_blahptr;
26 unsigned int ev4_uint;
27 int ev4_int;
28 }
29
30 *TRANSITIONS
31
32 SAME <== [ STATE_A, STATE_B ] [ EV_1, EV_2, EV_3 ]
33 ( $E.ev_all > 0 )
34 {
35 if( $P.test_state == STATE_A )
36 printf("state is STATE_A\n");
37 else
38 printf("state is STATE_B\n");
39 printf("action first transition\n");
40 }
41
42 ;
43 STATE_C <== [ STATE_A, STATE_B ] [ EV_1, EV_2, EV_3 ]
44 DEFAULT
45 {
46 printf("default - transition 2\n");
47 MACRO1( $P.test_pcbfield );
48 }
49 ;
50
51 STATE_C <== [ STATE_A, STATE_B ] EV_4
52 ( $$.ev4_blahptr->blahfield & 0x1 )
53 NULLACTION
54 ;
55
56 STATE_C <== ALL_STATES EV_4
57 DEFAULT
58 {
59 printf("default - transition 4\n");
60 printf("pcb is 0x%x, event is 0x%x \n", $P, $E);
61 printf("ev4 values are : blahptr 0x%x uint 0x%x int 0x%x\n",
62 $$.ev4_blahptr, $$.ev4_uint, $$.ev4_int);
63 }
64 ;
Cache object: bbc5a588ff6a3ab448f5de2ef10276f8
|