xref: /netbsd-src/sys/external/bsd/acpica/dist/compiler/aslresources.y (revision c7960b37466ae0fd417c32e6acbb4b956ac7a121)
1 NoEcho('
2 /******************************************************************************
3  *
4  * Module Name: aslresources.y - Bison/Yacc production rules for resources
5  *                             - Keep this file synched with the
6  *                               CvParseOpBlockType function in cvcompiler.c
7  *
8  *****************************************************************************/
9 
10 /*
11  * Copyright (C) 2000 - 2023, Intel Corp.
12  * All rights reserved.
13  *
14  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions
16  * are met:
17  * 1. Redistributions of source code must retain the above copyright
18  *    notice, this list of conditions, and the following disclaimer,
19  *    without modification.
20  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
21  *    substantially similar to the "NO WARRANTY" disclaimer below
22  *    ("Disclaimer") and any redistribution must be conditioned upon
23  *    including a substantially similar Disclaimer requirement for further
24  *    binary redistribution.
25  * 3. Neither the names of the above-listed copyright holders nor the names
26  *    of any contributors may be used to endorse or promote products derived
27  *    from this software without specific prior written permission.
28  *
29  * Alternatively, this software may be distributed under the terms of the
30  * GNU General Public License ("GPL") version 2 as published by the Free
31  * Software Foundation.
32  *
33  * NO WARRANTY
34  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
37  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
38  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
42  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
43  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44  * POSSIBILITY OF SUCH DAMAGES.
45  */
46 
47 ')
48 
49 
50 /*******************************************************************************
51  *
52  * ASL Resource Template Terms
53  *
54  ******************************************************************************/
55 
56 /*
57  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
58  * Also, insert the EndTag at the end of the template.
59  */
60 ResourceTemplateTerm
61     : PARSEOP_RESOURCETEMPLATE      {COMMENT_CAPTURE_OFF;}
62         OptionalParentheses
63         '{'
64         ResourceMacroList '}'       {$$ = TrCreateOp (PARSEOP_RESOURCETEMPLATE,4,
65                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
66                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
67                                           $5,
68                                           TrCreateLeafOp (PARSEOP_ENDTAG));
69                                      COMMENT_CAPTURE_ON;}
70     ;
71 
72 OptionalParentheses
73     :                               {$$ = NULL;}
74     | PARSEOP_OPEN_PAREN
75         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
76     ;
77 
78 ResourceMacroList
79     :                               {$$ = NULL;}
80     | ResourceMacroList
81         ResourceMacroTerm           {$$ = TrLinkPeerOp ($1,$2);}
82     ;
83 
84 ResourceMacroTerm
85     : Csi2SerialBusTerm             {}
86     | DMATerm                       {}
87     | DWordIOTerm                   {}
88     | DWordMemoryTerm               {}
89     | DWordPccTerm                  {}
90     | DWordSpaceTerm                {}
91     | EndDependentFnTerm            {}
92     | ExtendedIOTerm                {}
93     | ExtendedMemoryTerm            {}
94     | ExtendedSpaceTerm             {}
95     | FixedDmaTerm                  {}
96     | FixedIOTerm                   {}
97     | GpioIntTerm                   {}
98     | GpioIoTerm                    {}
99     | I2cSerialBusTerm              {}
100     | I2cSerialBusTermV2            {}
101     | InterruptTerm                 {}
102     | IOTerm                        {}
103     | IRQNoFlagsTerm                {}
104     | IRQTerm                       {}
105     | Memory24Term                  {}
106     | Memory32FixedTerm             {}
107     | Memory32Term                  {}
108     | PinConfigTerm                 {}
109     | PinFunctionTerm               {}
110     | ClockInputTerm                {}
111     | PinGroupTerm                  {}
112     | PinGroupConfigTerm            {}
113     | PinGroupFunctionTerm          {}
114     | QWordIOTerm                   {}
115     | QWordMemoryTerm               {}
116     | QWordPccTerm                  {}
117     | QWordSpaceTerm                {}
118     | RegisterTerm                  {}
119     | SpiSerialBusTerm              {}
120     | SpiSerialBusTermV2            {}
121     | StartDependentFnNoPriTerm     {}
122     | StartDependentFnTerm          {}
123     | UartSerialBusTerm             {}
124     | UartSerialBusTermV2           {}
125     | VendorLongTerm                {}
126     | VendorShortTerm               {}
127     | WordBusNumberTerm             {}
128     | WordIOTerm                    {}
129     | WordPccTerm                   {}
130     | WordSpaceTerm                 {}
131     ;
132 
133 Csi2SerialBusTerm
134     : PARSEOP_CSI2_SERIALBUS
135         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
136         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
137         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
138         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
139         ',' StringData              /* 12: ResourceSource */
140         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
141         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
142         OptionalNameString          /* 16: DescriptorName */
143         OptionalBuffer_Last         /* 17: VendorData */
144         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
145                                         $4,$7,$9,$12,$14,$15,$16,$17);}
146     | PARSEOP_CSI2_SERIALBUS
147         PARSEOP_OPEN_PAREN
148         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
149 
150 DMATerm
151     : PARSEOP_DMA
152         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
153         DMATypeKeyword
154         OptionalBusMasterKeyword
155         ',' XferTypeKeyword
156         OptionalNameString_Last
157         PARSEOP_CLOSE_PAREN '{'
158             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
159     | PARSEOP_DMA
160         PARSEOP_OPEN_PAREN
161         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
162     ;
163 
164 DWordIOTerm
165     : PARSEOP_DWORDIO
166         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
167         OptionalResourceType_First
168         OptionalMinType
169         OptionalMaxType
170         OptionalDecodeType
171         OptionalRangeType
172         ',' DWordConstExpr
173         ',' DWordConstExpr
174         ',' DWordConstExpr
175         ',' DWordConstExpr
176         ',' DWordConstExpr
177         OptionalByteConstExpr
178         OptionalStringData
179         OptionalNameString
180         OptionalType
181         OptionalTranslationType_Last
182         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
183                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
184     | PARSEOP_DWORDIO
185         PARSEOP_OPEN_PAREN
186         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
187     ;
188 
189 DWordMemoryTerm
190     : PARSEOP_DWORDMEMORY
191         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
192         OptionalResourceType_First
193         OptionalDecodeType
194         OptionalMinType
195         OptionalMaxType
196         OptionalMemType
197         ',' OptionalReadWriteKeyword
198         ',' DWordConstExpr
199         ',' DWordConstExpr
200         ',' DWordConstExpr
201         ',' DWordConstExpr
202         ',' DWordConstExpr
203         OptionalByteConstExpr
204         OptionalStringData
205         OptionalNameString
206         OptionalAddressRange
207         OptionalType_Last
208         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
209                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
210     | PARSEOP_DWORDMEMORY
211         PARSEOP_OPEN_PAREN
212         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
213     ;
214 
215 DWordPccTerm
216     : PARSEOP_DWORDPCC
217         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
218         ByteConstExpr
219         OptionalByteConstExpr
220         OptionalStringData
221         OptionalNameString_Last
222         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
223                                                         $4,$5,$6,$7);}
224     | PARSEOP_DWORDPCC
225         PARSEOP_OPEN_PAREN
226         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
227     ;
228 
229 DWordSpaceTerm
230     : PARSEOP_DWORDSPACE
231         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
232         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
233         OptionalResourceType
234         OptionalDecodeType
235         OptionalMinType
236         OptionalMaxType
237         ',' ByteConstExpr
238         ',' DWordConstExpr
239         ',' DWordConstExpr
240         ',' DWordConstExpr
241         ',' DWordConstExpr
242         ',' DWordConstExpr
243         OptionalByteConstExpr
244         OptionalStringData
245         OptionalNameString_Last
246         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
247                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
248     | PARSEOP_DWORDSPACE
249         PARSEOP_OPEN_PAREN
250         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
251     ;
252 
253 EndDependentFnTerm
254     : PARSEOP_ENDDEPENDENTFN
255         PARSEOP_OPEN_PAREN
256         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
257     | PARSEOP_ENDDEPENDENTFN
258         PARSEOP_OPEN_PAREN
259         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
260     ;
261 
262 ExtendedIOTerm
263     : PARSEOP_EXTENDEDIO
264         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
265         OptionalResourceType_First
266         OptionalMinType
267         OptionalMaxType
268         OptionalDecodeType
269         OptionalRangeType
270         ',' QWordConstExpr
271         ',' QWordConstExpr
272         ',' QWordConstExpr
273         ',' QWordConstExpr
274         ',' QWordConstExpr
275         OptionalQWordConstExpr
276         OptionalNameString
277         OptionalType
278         OptionalTranslationType_Last
279         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
280                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
281     | PARSEOP_EXTENDEDIO
282         PARSEOP_OPEN_PAREN
283         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
284     ;
285 
286 ExtendedMemoryTerm
287     : PARSEOP_EXTENDEDMEMORY
288         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
289         OptionalResourceType_First
290         OptionalDecodeType
291         OptionalMinType
292         OptionalMaxType
293         OptionalMemType
294         ',' OptionalReadWriteKeyword
295         ',' QWordConstExpr
296         ',' QWordConstExpr
297         ',' QWordConstExpr
298         ',' QWordConstExpr
299         ',' QWordConstExpr
300         OptionalQWordConstExpr
301         OptionalNameString
302         OptionalAddressRange
303         OptionalType_Last
304         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
305                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
306     | PARSEOP_EXTENDEDMEMORY
307         PARSEOP_OPEN_PAREN
308         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
309     ;
310 
311 ExtendedSpaceTerm
312     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
313         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
314         OptionalResourceType
315         OptionalDecodeType
316         OptionalMinType
317         OptionalMaxType
318         ',' ByteConstExpr
319         ',' QWordConstExpr
320         ',' QWordConstExpr
321         ',' QWordConstExpr
322         ',' QWordConstExpr
323         ',' QWordConstExpr
324         OptionalQWordConstExpr
325         OptionalNameString_Last
326         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
327                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
328     | PARSEOP_EXTENDEDSPACE
329         PARSEOP_OPEN_PAREN
330         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
331     ;
332 
333 FixedDmaTerm
334     : PARSEOP_FIXEDDMA
335         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
336         WordConstExpr               /* 04: DMA RequestLines */
337         ',' WordConstExpr           /* 06: DMA Channels */
338         OptionalXferSize            /* 07: DMA TransferSize */
339         OptionalNameString          /* 08: DescriptorName */
340         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
341     | PARSEOP_FIXEDDMA
342         PARSEOP_OPEN_PAREN
343         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
344     ;
345 
346 FixedIOTerm
347     : PARSEOP_FIXEDIO
348         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
349         WordConstExpr
350         ',' ByteConstExpr
351         OptionalNameString_Last
352         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
353     | PARSEOP_FIXEDIO
354         PARSEOP_OPEN_PAREN
355         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
356     ;
357 
358 GpioIntTerm
359     : PARSEOP_GPIO_INT
360         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
361         InterruptTypeKeyword        /* 04: InterruptType */
362         ',' InterruptLevel          /* 06: InterruptLevel */
363         OptionalShareType           /* 07: SharedType */
364         ',' PinConfigByte           /* 09: PinConfig */
365         OptionalWordConstExpr       /* 10: DebounceTimeout */
366         ',' StringData              /* 12: ResourceSource */
367         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
368         OptionalResourceType        /* 14: ResourceType */
369         OptionalNameString          /* 15: DescriptorName */
370         OptionalBuffer_Last         /* 16: VendorData */
371         PARSEOP_CLOSE_PAREN '{'
372             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
373                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
374     | PARSEOP_GPIO_INT
375         PARSEOP_OPEN_PAREN
376         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
377     ;
378 
379 GpioIoTerm
380     : PARSEOP_GPIO_IO
381         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
382         OptionalShareType_First     /* 04: SharedType */
383         ',' PinConfigByte           /* 06: PinConfig */
384         OptionalWordConstExpr       /* 07: DebounceTimeout */
385         OptionalWordConstExpr       /* 08: DriveStrength */
386         OptionalIoRestriction       /* 09: IoRestriction */
387         ',' StringData              /* 11: ResourceSource */
388         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
389         OptionalResourceType        /* 13: ResourceType */
390         OptionalNameString          /* 14: DescriptorName */
391         OptionalBuffer_Last         /* 15: VendorData */
392         PARSEOP_CLOSE_PAREN '{'
393             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
394                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
395     | PARSEOP_GPIO_IO
396         PARSEOP_OPEN_PAREN
397         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
398     ;
399 
400 I2cSerialBusTerm
401     : PARSEOP_I2C_SERIALBUS
402         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
403         WordConstExpr               /* 04: SlaveAddress */
404         OptionalSlaveMode           /* 05: SlaveMode */
405         ',' DWordConstExpr          /* 07: ConnectionSpeed */
406         OptionalAddressingMode      /* 08: AddressingMode */
407         ',' StringData              /* 10: ResourceSource */
408         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
409         OptionalResourceType        /* 12: ResourceType */
410         OptionalNameString          /* 13: DescriptorName */
411         OptionalBuffer_Last         /* 14: VendorData */
412         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
413                                         $4,$5,$7,$8,$10,$11,$12,$13,
414                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
415     | PARSEOP_I2C_SERIALBUS
416         PARSEOP_OPEN_PAREN
417         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
418     ;
419 
420 I2cSerialBusTermV2
421     : PARSEOP_I2C_SERIALBUS_V2
422         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
423         WordConstExpr               /* 04: SlaveAddress */
424         OptionalSlaveMode           /* 05: SlaveMode */
425         ',' DWordConstExpr          /* 07: ConnectionSpeed */
426         OptionalAddressingMode      /* 08: AddressingMode */
427         ',' StringData              /* 10: ResourceSource */
428         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
429         OptionalResourceType        /* 12: ResourceType */
430         OptionalNameString          /* 13: DescriptorName */
431         OptionalShareType           /* 14: Share */
432         OptionalBuffer_Last         /* 15: VendorData */
433         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
434                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
435     | PARSEOP_I2C_SERIALBUS_V2
436         PARSEOP_OPEN_PAREN
437         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
438     ;
439 
440 InterruptTerm
441     : PARSEOP_INTERRUPT
442         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
443         OptionalResourceType_First
444         ',' InterruptTypeKeyword
445         ',' InterruptLevel
446         OptionalShareType
447         OptionalByteConstExpr
448         OptionalStringData
449         OptionalNameString_Last
450         PARSEOP_CLOSE_PAREN '{'
451             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
452                                         $4,$6,$8,$9,$10,$11,$12,$15);}
453     | PARSEOP_INTERRUPT
454         PARSEOP_OPEN_PAREN
455         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
456     ;
457 
458 IOTerm
459     : PARSEOP_IO
460         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
461         IODecodeKeyword
462         ',' WordConstExpr
463         ',' WordConstExpr
464         ',' ByteConstExpr
465         ',' ByteConstExpr
466         OptionalNameString_Last
467         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
468     | PARSEOP_IO
469         PARSEOP_OPEN_PAREN
470         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
471     ;
472 
473 IRQNoFlagsTerm
474     : PARSEOP_IRQNOFLAGS
475         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
476         OptionalNameString_First
477         PARSEOP_CLOSE_PAREN '{'
478             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
479     | PARSEOP_IRQNOFLAGS
480         PARSEOP_OPEN_PAREN
481         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
482     ;
483 
484 IRQTerm
485     : PARSEOP_IRQ
486         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
487         InterruptTypeKeyword
488         ',' InterruptLevel
489         OptionalShareType
490         OptionalNameString_Last
491         PARSEOP_CLOSE_PAREN '{'
492             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
493     | PARSEOP_IRQ
494         PARSEOP_OPEN_PAREN
495         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
496     ;
497 
498 Memory24Term
499     : PARSEOP_MEMORY24
500         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
501         OptionalReadWriteKeyword
502         ',' WordConstExpr
503         ',' WordConstExpr
504         ',' WordConstExpr
505         ',' WordConstExpr
506         OptionalNameString_Last
507         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
508     | PARSEOP_MEMORY24
509         PARSEOP_OPEN_PAREN
510         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
511     ;
512 
513 Memory32FixedTerm
514     : PARSEOP_MEMORY32FIXED
515         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
516         OptionalReadWriteKeyword
517         ',' DWordConstExpr
518         ',' DWordConstExpr
519         OptionalNameString_Last
520         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
521     | PARSEOP_MEMORY32FIXED
522         PARSEOP_OPEN_PAREN
523         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
524     ;
525 
526 Memory32Term
527     : PARSEOP_MEMORY32
528         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
529         OptionalReadWriteKeyword
530         ',' DWordConstExpr
531         ',' DWordConstExpr
532         ',' DWordConstExpr
533         ',' DWordConstExpr
534         OptionalNameString_Last
535         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
536     | PARSEOP_MEMORY32
537         PARSEOP_OPEN_PAREN
538         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
539     ;
540 
541 PinConfigTerm
542     : PARSEOP_PINCONFIG
543         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
544         OptionalShareType_First     /* 04: SharedType */
545         ',' ByteConstExpr           /* 06: PinConfigType */
546         ',' DWordConstExpr          /* 08: PinConfigValue */
547         ',' StringData              /* 10: ResourceSource */
548         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
549         OptionalResourceType        /* 12: ResourceType */
550         OptionalNameString          /* 13: DescriptorName */
551         OptionalBuffer_Last         /* 14: VendorData */
552         PARSEOP_CLOSE_PAREN '{'
553             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
554                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
555     | PARSEOP_PINCONFIG
556         PARSEOP_OPEN_PAREN
557         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
558     ;
559 
560 PinFunctionTerm
561     : PARSEOP_PINFUNCTION
562         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
563         OptionalShareType_First     /* 04: SharedType */
564         ',' PinConfigByte           /* 06: PinConfig */
565         ',' WordConstExpr           /* 08: FunctionNumber */
566         ',' StringData              /* 10: ResourceSource */
567         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
568         OptionalResourceType        /* 12: ResourceType */
569         OptionalNameString          /* 13: DescriptorName */
570         OptionalBuffer_Last         /* 14: VendorData */
571         PARSEOP_CLOSE_PAREN '{'
572             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
573                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
574     | PARSEOP_PINFUNCTION
575         PARSEOP_OPEN_PAREN
576         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
577     ;
578 
579 ClockInputTerm
580     : PARSEOP_CLOCKINPUT
581         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
582         DWordConstExpr              /* 04: FrequencyNumerator */
583         ',' WordConstExpr           /* 06: FrequencyDivisor */
584         ',' ClockScaleKeyword       /* 08: Scale */
585         ',' ClockModeKeyword        /* 10: Mode*/
586         OptionalStringData          /* 11: ResourceSource */
587         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
588         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
589     | PARSEOP_CLOCKINPUT
590         PARSEOP_OPEN_PAREN
591         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
592     ;
593 
594 PinGroupTerm
595     : PARSEOP_PINGROUP
596         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
597         StringData                  /* 04: ResourceLabel */
598         OptionalProducerResourceType /* 05: ResourceType */
599         OptionalNameString          /* 06: DescriptorName */
600         OptionalBuffer_Last         /* 07: VendorData */
601         PARSEOP_CLOSE_PAREN '{'
602             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
603     | PARSEOP_PINGROUP
604         PARSEOP_OPEN_PAREN
605         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
606     ;
607 
608 PinGroupConfigTerm
609     : PARSEOP_PINGROUPCONFIG
610         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
611         OptionalShareType_First     /* 04: SharedType */
612         ',' ByteConstExpr           /* 06: PinConfigType */
613         ',' DWordConstExpr          /* 08: PinConfigValue */
614         ',' StringData              /* 10: ResourceSource */
615         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
616         ',' StringData              /* 13: ResourceSourceLabel */
617         OptionalResourceType        /* 14: ResourceType */
618         OptionalNameString          /* 15: DescriptorName */
619         OptionalBuffer_Last         /* 16: VendorData */
620         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
621                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
622     | PARSEOP_PINGROUPCONFIG
623         PARSEOP_OPEN_PAREN
624         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
625     ;
626 
627 PinGroupFunctionTerm
628     : PARSEOP_PINGROUPFUNCTION
629         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
630         OptionalShareType_First     /* 04: SharedType */
631         ',' WordConstExpr           /* 06: FunctionNumber */
632         ',' StringData              /* 08: ResourceSource */
633         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
634         ',' StringData              /* 11: ResourceSourceLabel */
635         OptionalResourceType        /* 12: ResourceType */
636         OptionalNameString          /* 13: DescriptorName */
637         OptionalBuffer_Last         /* 14: VendorData */
638         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
639                                         $4,$6,$8,$9,$11,$12,$13,$14);}
640     | PARSEOP_PINGROUPFUNCTION
641         PARSEOP_OPEN_PAREN
642         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
643     ;
644 
645 QWordIOTerm
646     : PARSEOP_QWORDIO
647         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
648         OptionalResourceType_First
649         OptionalMinType
650         OptionalMaxType
651         OptionalDecodeType
652         OptionalRangeType
653         ',' QWordConstExpr
654         ',' QWordConstExpr
655         ',' QWordConstExpr
656         ',' QWordConstExpr
657         ',' QWordConstExpr
658         OptionalByteConstExpr
659         OptionalStringData
660         OptionalNameString
661         OptionalType
662         OptionalTranslationType_Last
663         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
664                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
665     | PARSEOP_QWORDIO
666         PARSEOP_OPEN_PAREN
667         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
668     ;
669 
670 QWordMemoryTerm
671     : PARSEOP_QWORDMEMORY
672         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
673         OptionalResourceType_First
674         OptionalDecodeType
675         OptionalMinType
676         OptionalMaxType
677         OptionalMemType
678         ',' OptionalReadWriteKeyword
679         ',' QWordConstExpr
680         ',' QWordConstExpr
681         ',' QWordConstExpr
682         ',' QWordConstExpr
683         ',' QWordConstExpr
684         OptionalByteConstExpr
685         OptionalStringData
686         OptionalNameString
687         OptionalAddressRange
688         OptionalType_Last
689         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
690                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
691     | PARSEOP_QWORDMEMORY
692         PARSEOP_OPEN_PAREN
693         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
694     ;
695 
696 QWordPccTerm
697     : PARSEOP_QWORDPCC
698         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
699         ByteConstExpr
700         OptionalByteConstExpr
701         OptionalStringData
702         OptionalNameString_Last
703         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
704                                                         $4,$5,$6,$7);}
705     | PARSEOP_QWORDPCC
706         PARSEOP_OPEN_PAREN
707         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
708     ;
709 
710 QWordSpaceTerm
711     : PARSEOP_QWORDSPACE
712         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
713         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
714         OptionalResourceType
715         OptionalDecodeType
716         OptionalMinType
717         OptionalMaxType
718         ',' ByteConstExpr
719         ',' QWordConstExpr
720         ',' QWordConstExpr
721         ',' QWordConstExpr
722         ',' QWordConstExpr
723         ',' QWordConstExpr
724         OptionalByteConstExpr
725         OptionalStringData
726         OptionalNameString_Last
727         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
728                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
729     | PARSEOP_QWORDSPACE
730         PARSEOP_OPEN_PAREN
731         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
732     ;
733 
734 RegisterTerm
735     : PARSEOP_REGISTER
736         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
737         AddressSpaceKeyword
738         ',' ByteConstExpr
739         ',' ByteConstExpr
740         ',' QWordConstExpr
741         OptionalAccessSize
742         OptionalNameString_Last
743         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
744     | PARSEOP_REGISTER
745         PARSEOP_OPEN_PAREN
746         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
747     ;
748 
749 SpiSerialBusTerm
750     : PARSEOP_SPI_SERIALBUS
751         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
752         WordConstExpr               /* 04: DeviceSelection */
753         OptionalDevicePolarity      /* 05: DevicePolarity */
754         OptionalWireMode            /* 06: WireMode */
755         ',' ByteConstExpr           /* 08: DataBitLength */
756         OptionalSlaveMode           /* 09: SlaveMode */
757         ',' DWordConstExpr          /* 11: ConnectionSpeed */
758         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
759         ',' ClockPhaseKeyword       /* 15: ClockPhase */
760         ',' StringData              /* 17: ResourceSource */
761         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
762         OptionalResourceType        /* 19: ResourceType */
763         OptionalNameString          /* 20: DescriptorName */
764         OptionalBuffer_Last         /* 21: VendorData */
765         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
766                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
767                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
768     | PARSEOP_SPI_SERIALBUS
769         PARSEOP_OPEN_PAREN
770         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
771     ;
772 
773 SpiSerialBusTermV2
774     : PARSEOP_SPI_SERIALBUS_V2
775         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
776         WordConstExpr               /* 04: DeviceSelection */
777         OptionalDevicePolarity      /* 05: DevicePolarity */
778         OptionalWireMode            /* 06: WireMode */
779         ',' ByteConstExpr           /* 08: DataBitLength */
780         OptionalSlaveMode           /* 09: SlaveMode */
781         ',' DWordConstExpr          /* 11: ConnectionSpeed */
782         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
783         ',' ClockPhaseKeyword       /* 15: ClockPhase */
784         ',' StringData              /* 17: ResourceSource */
785         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
786         OptionalResourceType        /* 19: ResourceType */
787         OptionalNameString          /* 20: DescriptorName */
788         OptionalShareType           /* 21: Share */
789         OptionalBuffer_Last         /* 22: VendorData */
790         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
791                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
792     | PARSEOP_SPI_SERIALBUS_V2
793         PARSEOP_OPEN_PAREN
794         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
795     ;
796 
797 StartDependentFnNoPriTerm
798     : PARSEOP_STARTDEPENDENTFN_NOPRI
799         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
800         PARSEOP_CLOSE_PAREN '{'
801         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
802     | PARSEOP_STARTDEPENDENTFN_NOPRI
803         PARSEOP_OPEN_PAREN
804         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
805     ;
806 
807 StartDependentFnTerm
808     : PARSEOP_STARTDEPENDENTFN
809         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
810         ByteConstExpr
811         ',' ByteConstExpr
812         PARSEOP_CLOSE_PAREN '{'
813         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
814     | PARSEOP_STARTDEPENDENTFN
815         PARSEOP_OPEN_PAREN
816         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
817     ;
818 
819 UartSerialBusTerm
820     : PARSEOP_UART_SERIALBUS
821         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
822         DWordConstExpr              /* 04: ConnectionSpeed */
823         OptionalBitsPerByte         /* 05: BitsPerByte */
824         OptionalStopBits            /* 06: StopBits */
825         ',' ByteConstExpr           /* 08: LinesInUse */
826         OptionalEndian              /* 09: Endianness */
827         OptionalParityType          /* 10: Parity */
828         OptionalFlowControl         /* 11: FlowControl */
829         ',' WordConstExpr           /* 13: Rx BufferSize */
830         ',' WordConstExpr           /* 15: Tx BufferSize */
831         ',' StringData              /* 17: ResourceSource */
832         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
833         OptionalResourceType        /* 19: ResourceType */
834         OptionalNameString          /* 20: DescriptorName */
835         OptionalBuffer_Last         /* 21: VendorData */
836         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
837                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
838                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
839     | PARSEOP_UART_SERIALBUS
840         PARSEOP_OPEN_PAREN
841         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
842     ;
843 
844 UartSerialBusTermV2
845     : PARSEOP_UART_SERIALBUS_V2
846         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
847         DWordConstExpr              /* 04: ConnectionSpeed */
848         OptionalBitsPerByte         /* 05: BitsPerByte */
849         OptionalStopBits            /* 06: StopBits */
850         ',' ByteConstExpr           /* 08: LinesInUse */
851         OptionalEndian              /* 09: Endianness */
852         OptionalParityType          /* 10: Parity */
853         OptionalFlowControl         /* 11: FlowControl */
854         ',' WordConstExpr           /* 13: Rx BufferSize */
855         ',' WordConstExpr           /* 15: Tx BufferSize */
856         ',' StringData              /* 17: ResourceSource */
857         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
858         OptionalResourceType        /* 19: ResourceType */
859         OptionalNameString          /* 20: DescriptorName */
860         OptionalShareType           /* 21: Share */
861         OptionalBuffer_Last         /* 22: VendorData */
862         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
863                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
864     | PARSEOP_UART_SERIALBUS_V2
865         PARSEOP_OPEN_PAREN
866         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
867     ;
868 
869 VendorLongTerm
870     : PARSEOP_VENDORLONG
871         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
872         OptionalNameString_First
873         PARSEOP_CLOSE_PAREN '{'
874             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
875     | PARSEOP_VENDORLONG
876         PARSEOP_OPEN_PAREN
877         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
878     ;
879 
880 VendorShortTerm
881     : PARSEOP_VENDORSHORT
882         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
883         OptionalNameString_First
884         PARSEOP_CLOSE_PAREN '{'
885             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
886     | PARSEOP_VENDORSHORT
887         PARSEOP_OPEN_PAREN
888         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
889     ;
890 
891 WordBusNumberTerm
892     : PARSEOP_WORDBUSNUMBER
893         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
894         OptionalResourceType_First
895         OptionalMinType
896         OptionalMaxType
897         OptionalDecodeType
898         ',' WordConstExpr
899         ',' WordConstExpr
900         ',' WordConstExpr
901         ',' WordConstExpr
902         ',' WordConstExpr
903         OptionalByteConstExpr
904         OptionalStringData
905         OptionalNameString_Last
906         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
907                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
908     | PARSEOP_WORDBUSNUMBER
909         PARSEOP_OPEN_PAREN
910         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
911     ;
912 
913 WordIOTerm
914     : PARSEOP_WORDIO
915         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
916         OptionalResourceType_First
917         OptionalMinType
918         OptionalMaxType
919         OptionalDecodeType
920         OptionalRangeType
921         ',' WordConstExpr
922         ',' WordConstExpr
923         ',' WordConstExpr
924         ',' WordConstExpr
925         ',' WordConstExpr
926         OptionalByteConstExpr
927         OptionalStringData
928         OptionalNameString
929         OptionalType
930         OptionalTranslationType_Last
931         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
932                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
933     | PARSEOP_WORDIO
934         PARSEOP_OPEN_PAREN
935         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
936     ;
937 
938 WordPccTerm
939     : PARSEOP_WORDPCC
940         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
941         ByteConstExpr
942         OptionalByteConstExpr
943         OptionalStringData
944         OptionalNameString_Last
945         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
946                                                         $4,$5,$6,$7);}
947     | PARSEOP_WORDPCC
948         PARSEOP_OPEN_PAREN
949         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
950     ;
951 
952 WordSpaceTerm
953     : PARSEOP_WORDSPACE
954         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
955         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
956         OptionalResourceType
957         OptionalDecodeType
958         OptionalMinType
959         OptionalMaxType
960         ',' ByteConstExpr
961         ',' WordConstExpr
962         ',' WordConstExpr
963         ',' WordConstExpr
964         ',' WordConstExpr
965         ',' WordConstExpr
966         OptionalByteConstExpr
967         OptionalStringData
968         OptionalNameString_Last
969         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
970                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
971     | PARSEOP_WORDSPACE
972         PARSEOP_OPEN_PAREN
973         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
974     ;
975