Commit | Line | Data |
---|---|---|
eb5ad1d2 F |
1 | /* Input/Output Statements */ |
2 | ||
3 | io: io1 | |
4 | { endio(); } | |
5 | ; | |
6 | ||
7 | io1: iofmove ioctl | |
8 | | iofmove unpar_fexpr | |
9 | { ioclause(IOSUNIT, $2); endioctl(); } | |
10 | | iofctl ioctl | |
11 | | read ioctl | |
12 | { doio(NULL); } | |
13 | | read ioctl inlist | |
14 | { doio($3); } | |
15 | | read infmt SCOMMA inlist | |
16 | { doio($4); } | |
17 | | read ioctl SCOMMA inlist | |
18 | { doio($4); } | |
19 | | write ioctl | |
20 | { doio(NULL); } | |
21 | | write ioctl outlist | |
22 | { doio($3); } | |
23 | ||
24 | { doio(NULL); } | |
25 | | print SCOMMA outlist | |
26 | { doio($3); } | |
27 | ; | |
28 | ||
29 | iofmove: fmkwd end_spec in_ioctl | |
30 | ; | |
31 | ||
32 | fmkwd: SBACKSPACE | |
33 | { iostmt = IOREWIND; } | |
34 | | SREWIND | |
35 | { iostmt = IOREWIND; } | |
36 | | SENDFILE | |
37 | { iostmt = IOENDFILE; } | |
38 | ; | |
39 | ||
40 | iofctl: ctlkwd end_spec in_ioctl | |
41 | ; | |
42 | ||
43 | ctlkwd: SINQUIRE | |
44 | { iostmt = IOINQUIRE; } | |
45 | | SOPEN | |
46 | { iostmt = IOOPEN; } | |
47 | | SCLOSE | |
48 | { iostmt = IOCLOSE; } | |
49 | ; | |
50 | ||
51 | infmt: unpar_fexpr | |
52 | { | |
53 | ioclause(IOSUNIT, NULL); | |
54 | ioclause(IOSFMT, $1); | |
55 | endioctl(); | |
56 | } | |
57 | | SSTAR | |
58 | { | |
59 | ioclause(IOSUNIT, NULL); | |
60 | ioclause(IOSFMT, NULL); | |
61 | endioctl(); | |
62 | } | |
63 | ; | |
64 | ||
65 | ioctl: SLPAR fexpr SRPAR | |
66 | { ioclause(IOSUNIT, $2); endioctl(); } | |
67 | | SLPAR ctllist SRPAR | |
68 | { endioctl(); } | |
69 | ; | |
70 | ||
71 | ctllist: ioclause SCOMMA ioclause | |
72 | | ctllist SCOMMA ioclause | |
73 | ; | |
74 | ||
75 | ioclause: fexpr | |
76 | { ioclause(IOSPOSITIONAL, $1); } | |
77 | | SSTAR | |
78 | { ioclause(IOSPOSITIONAL, NULL); } | |
79 | | nameeq expr | |
80 | { ioclause($1, $2); } | |
81 | | nameeq SSTAR | |
82 | { ioclause($1, NULL); } | |
83 | ; | |
84 | ||
85 | nameeq: SNAMEEQ | |
86 | { $$ = iocname(); } | |
87 | ; | |
88 | ||
89 | read: SREAD end_spec in_ioctl | |
90 | { iostmt = IOREAD; } | |
91 | ; | |
92 | ||
93 | write: SWRITE end_spec in_ioctl | |
94 | { iostmt = IOWRITE; } | |
95 | ; | |
96 | ||
97 | print: SPRINT end_spec fexpr in_ioctl | |
98 | { | |
99 | iostmt = IOWRITE; | |
100 | ioclause(IOSUNIT, NULL); | |
101 | ioclause(IOSFMT, $3); | |
102 | endioctl(); | |
103 | } | |
104 | | SPRINT end_spec SSTAR in_ioctl | |
105 | { | |
106 | iostmt = IOWRITE; | |
107 | ioclause(IOSUNIT, NULL); | |
108 | ioclause(IOSFMT, NULL); | |
109 | endioctl(); | |
110 | } | |
111 | ; | |
112 | ||
113 | inlist: inelt | |
114 | { $$ = mkchain($1,0); } | |
115 | | inlist SCOMMA inelt | |
116 | { $$ = hookup($1, mkchain($3,0)); } | |
117 | ; | |
118 | ||
119 | inelt: lhs | |
120 | | SLPAR inlist SCOMMA dospec SRPAR | |
121 | { $$ = mkiodo($4,$2); } | |
122 | ; | |
123 | ||
124 | outlist: uexpr | |
125 | { $$ = mkchain($1, 0); } | |
126 | | other | |
127 | { $$ = mkchain($1, 0); } | |
128 | | out2 | |
129 | ; | |
130 | ||
131 | out2: uexpr SCOMMA uexpr | |
132 | { $$ = mkchain($1, mkchain($3, 0) ); } | |
133 | | uexpr SCOMMA other | |
134 | { $$ = mkchain($1, mkchain($3, 0) ); } | |
135 | | other SCOMMA uexpr | |
136 | { $$ = mkchain($1, mkchain($3, 0) ); } | |
137 | | other SCOMMA other | |
138 | { $$ = mkchain($1, mkchain($3, 0) ); } | |
139 | | out2 SCOMMA uexpr | |
140 | { $$ = hookup($1, mkchain($3, 0) ); } | |
141 | | out2 SCOMMA other | |
142 | { $$ = hookup($1, mkchain($3, 0) ); } | |
143 | ; | |
144 | ||
145 | other: complex_const | |
146 | | SLPAR uexpr SCOMMA dospec SRPAR | |
147 | { $$ = mkiodo($4, mkchain($2, 0) ); } | |
148 | | SLPAR other SCOMMA dospec SRPAR | |
149 | { $$ = mkiodo($4, mkchain($2, 0) ); } | |
150 | | SLPAR out2 SCOMMA dospec SRPAR | |
151 | { $$ = mkiodo($4, $2); } | |
152 | ; | |
153 | ||
154 | in_ioctl: | |
155 | { startioctl(); } | |
156 | ; |