Home | History | Annotate | Line # | Download | only in compiler
aslresources.y revision 1.1.1.12
      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     | DWordSpaceTerm                {}
     90     | EndDependentFnTerm            {}
     91     | ExtendedIOTerm                {}
     92     | ExtendedMemoryTerm            {}
     93     | ExtendedSpaceTerm             {}
     94     | FixedDmaTerm                  {}
     95     | FixedIOTerm                   {}
     96     | GpioIntTerm                   {}
     97     | GpioIoTerm                    {}
     98     | I2cSerialBusTerm              {}
     99     | I2cSerialBusTermV2            {}
    100     | InterruptTerm                 {}
    101     | IOTerm                        {}
    102     | IRQNoFlagsTerm                {}
    103     | IRQTerm                       {}
    104     | Memory24Term                  {}
    105     | Memory32FixedTerm             {}
    106     | Memory32Term                  {}
    107     | PinConfigTerm                 {}
    108     | PinFunctionTerm               {}
    109     | ClockInputTerm                {}
    110     | PinGroupTerm                  {}
    111     | PinGroupConfigTerm            {}
    112     | PinGroupFunctionTerm          {}
    113     | QWordIOTerm                   {}
    114     | QWordMemoryTerm               {}
    115     | QWordSpaceTerm                {}
    116     | RegisterTerm                  {}
    117     | SpiSerialBusTerm              {}
    118     | SpiSerialBusTermV2            {}
    119     | StartDependentFnNoPriTerm     {}
    120     | StartDependentFnTerm          {}
    121     | UartSerialBusTerm             {}
    122     | UartSerialBusTermV2           {}
    123     | VendorLongTerm                {}
    124     | VendorShortTerm               {}
    125     | WordBusNumberTerm             {}
    126     | WordIOTerm                    {}
    127     | WordSpaceTerm                 {}
    128     ;
    129 
    130 Csi2SerialBusTerm
    131     : PARSEOP_CSI2_SERIALBUS
    132         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
    133         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
    134         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
    135         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
    136         ',' StringData              /* 12: ResourceSource */
    137         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
    138         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
    139         OptionalNameString          /* 16: DescriptorName */
    140         OptionalBuffer_Last         /* 17: VendorData */
    141         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
    142                                         $4,$7,$9,$12,$14,$15,$16,$17);}
    143     | PARSEOP_CSI2_SERIALBUS
    144         PARSEOP_OPEN_PAREN
    145         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    146 
    147 DMATerm
    148     : PARSEOP_DMA
    149         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
    150         DMATypeKeyword
    151         OptionalBusMasterKeyword
    152         ',' XferTypeKeyword
    153         OptionalNameString_Last
    154         PARSEOP_CLOSE_PAREN '{'
    155             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    156     | PARSEOP_DMA
    157         PARSEOP_OPEN_PAREN
    158         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    159     ;
    160 
    161 DWordIOTerm
    162     : PARSEOP_DWORDIO
    163         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
    164         OptionalResourceType_First
    165         OptionalMinType
    166         OptionalMaxType
    167         OptionalDecodeType
    168         OptionalRangeType
    169         ',' DWordConstExpr
    170         ',' DWordConstExpr
    171         ',' DWordConstExpr
    172         ',' DWordConstExpr
    173         ',' DWordConstExpr
    174         OptionalByteConstExpr
    175         OptionalStringData
    176         OptionalNameString
    177         OptionalType
    178         OptionalTranslationType_Last
    179         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    180                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    181     | PARSEOP_DWORDIO
    182         PARSEOP_OPEN_PAREN
    183         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    184     ;
    185 
    186 DWordMemoryTerm
    187     : PARSEOP_DWORDMEMORY
    188         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
    189         OptionalResourceType_First
    190         OptionalDecodeType
    191         OptionalMinType
    192         OptionalMaxType
    193         OptionalMemType
    194         ',' OptionalReadWriteKeyword
    195         ',' DWordConstExpr
    196         ',' DWordConstExpr
    197         ',' DWordConstExpr
    198         ',' DWordConstExpr
    199         ',' DWordConstExpr
    200         OptionalByteConstExpr
    201         OptionalStringData
    202         OptionalNameString
    203         OptionalAddressRange
    204         OptionalType_Last
    205         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
    206                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    207     | PARSEOP_DWORDMEMORY
    208         PARSEOP_OPEN_PAREN
    209         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    210     ;
    211 
    212 DWordSpaceTerm
    213     : PARSEOP_DWORDSPACE
    214         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
    215         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    216         OptionalResourceType
    217         OptionalDecodeType
    218         OptionalMinType
    219         OptionalMaxType
    220         ',' ByteConstExpr
    221         ',' DWordConstExpr
    222         ',' DWordConstExpr
    223         ',' DWordConstExpr
    224         ',' DWordConstExpr
    225         ',' DWordConstExpr
    226         OptionalByteConstExpr
    227         OptionalStringData
    228         OptionalNameString_Last
    229         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    230                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    231     | PARSEOP_DWORDSPACE
    232         PARSEOP_OPEN_PAREN
    233         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    234     ;
    235 
    236 EndDependentFnTerm
    237     : PARSEOP_ENDDEPENDENTFN
    238         PARSEOP_OPEN_PAREN
    239         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
    240     | PARSEOP_ENDDEPENDENTFN
    241         PARSEOP_OPEN_PAREN
    242         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    243     ;
    244 
    245 ExtendedIOTerm
    246     : PARSEOP_EXTENDEDIO
    247         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
    248         OptionalResourceType_First
    249         OptionalMinType
    250         OptionalMaxType
    251         OptionalDecodeType
    252         OptionalRangeType
    253         ',' QWordConstExpr
    254         ',' QWordConstExpr
    255         ',' QWordConstExpr
    256         ',' QWordConstExpr
    257         ',' QWordConstExpr
    258         OptionalQWordConstExpr
    259         OptionalNameString
    260         OptionalType
    261         OptionalTranslationType_Last
    262         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    263                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    264     | PARSEOP_EXTENDEDIO
    265         PARSEOP_OPEN_PAREN
    266         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    267     ;
    268 
    269 ExtendedMemoryTerm
    270     : PARSEOP_EXTENDEDMEMORY
    271         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
    272         OptionalResourceType_First
    273         OptionalDecodeType
    274         OptionalMinType
    275         OptionalMaxType
    276         OptionalMemType
    277         ',' OptionalReadWriteKeyword
    278         ',' QWordConstExpr
    279         ',' QWordConstExpr
    280         ',' QWordConstExpr
    281         ',' QWordConstExpr
    282         ',' QWordConstExpr
    283         OptionalQWordConstExpr
    284         OptionalNameString
    285         OptionalAddressRange
    286         OptionalType_Last
    287         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    288                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    289     | PARSEOP_EXTENDEDMEMORY
    290         PARSEOP_OPEN_PAREN
    291         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    292     ;
    293 
    294 ExtendedSpaceTerm
    295     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
    296         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    297         OptionalResourceType
    298         OptionalDecodeType
    299         OptionalMinType
    300         OptionalMaxType
    301         ',' ByteConstExpr
    302         ',' QWordConstExpr
    303         ',' QWordConstExpr
    304         ',' QWordConstExpr
    305         ',' QWordConstExpr
    306         ',' QWordConstExpr
    307         OptionalQWordConstExpr
    308         OptionalNameString_Last
    309         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
    310                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    311     | PARSEOP_EXTENDEDSPACE
    312         PARSEOP_OPEN_PAREN
    313         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    314     ;
    315 
    316 FixedDmaTerm
    317     : PARSEOP_FIXEDDMA
    318         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
    319         WordConstExpr               /* 04: DMA RequestLines */
    320         ',' WordConstExpr           /* 06: DMA Channels */
    321         OptionalXferSize            /* 07: DMA TransferSize */
    322         OptionalNameString          /* 08: DescriptorName */
    323         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
    324     | PARSEOP_FIXEDDMA
    325         PARSEOP_OPEN_PAREN
    326         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    327     ;
    328 
    329 FixedIOTerm
    330     : PARSEOP_FIXEDIO
    331         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
    332         WordConstExpr
    333         ',' ByteConstExpr
    334         OptionalNameString_Last
    335         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
    336     | PARSEOP_FIXEDIO
    337         PARSEOP_OPEN_PAREN
    338         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    339     ;
    340 
    341 GpioIntTerm
    342     : PARSEOP_GPIO_INT
    343         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
    344         InterruptTypeKeyword        /* 04: InterruptType */
    345         ',' InterruptLevel          /* 06: InterruptLevel */
    346         OptionalShareType           /* 07: SharedType */
    347         ',' PinConfigByte           /* 09: PinConfig */
    348         OptionalWordConstExpr       /* 10: DebounceTimeout */
    349         ',' StringData              /* 12: ResourceSource */
    350         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    351         OptionalResourceType        /* 14: ResourceType */
    352         OptionalNameString          /* 15: DescriptorName */
    353         OptionalBuffer_Last         /* 16: VendorData */
    354         PARSEOP_CLOSE_PAREN '{'
    355             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
    356                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    357     | PARSEOP_GPIO_INT
    358         PARSEOP_OPEN_PAREN
    359         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    360     ;
    361 
    362 GpioIoTerm
    363     : PARSEOP_GPIO_IO
    364         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
    365         OptionalShareType_First     /* 04: SharedType */
    366         ',' PinConfigByte           /* 06: PinConfig */
    367         OptionalWordConstExpr       /* 07: DebounceTimeout */
    368         OptionalWordConstExpr       /* 08: DriveStrength */
    369         OptionalIoRestriction       /* 09: IoRestriction */
    370         ',' StringData              /* 11: ResourceSource */
    371         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    372         OptionalResourceType        /* 13: ResourceType */
    373         OptionalNameString          /* 14: DescriptorName */
    374         OptionalBuffer_Last         /* 15: VendorData */
    375         PARSEOP_CLOSE_PAREN '{'
    376             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
    377                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    378     | PARSEOP_GPIO_IO
    379         PARSEOP_OPEN_PAREN
    380         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    381     ;
    382 
    383 I2cSerialBusTerm
    384     : PARSEOP_I2C_SERIALBUS
    385         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
    386         WordConstExpr               /* 04: SlaveAddress */
    387         OptionalSlaveMode           /* 05: SlaveMode */
    388         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    389         OptionalAddressingMode      /* 08: AddressingMode */
    390         ',' StringData              /* 10: ResourceSource */
    391         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    392         OptionalResourceType        /* 12: ResourceType */
    393         OptionalNameString          /* 13: DescriptorName */
    394         OptionalBuffer_Last         /* 14: VendorData */
    395         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
    396                                         $4,$5,$7,$8,$10,$11,$12,$13,
    397                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
    398     | PARSEOP_I2C_SERIALBUS
    399         PARSEOP_OPEN_PAREN
    400         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    401     ;
    402 
    403 I2cSerialBusTermV2
    404     : PARSEOP_I2C_SERIALBUS_V2
    405         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
    406         WordConstExpr               /* 04: SlaveAddress */
    407         OptionalSlaveMode           /* 05: SlaveMode */
    408         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    409         OptionalAddressingMode      /* 08: AddressingMode */
    410         ',' StringData              /* 10: ResourceSource */
    411         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    412         OptionalResourceType        /* 12: ResourceType */
    413         OptionalNameString          /* 13: DescriptorName */
    414         OptionalShareType           /* 14: Share */
    415         OptionalBuffer_Last         /* 15: VendorData */
    416         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
    417                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
    418     | PARSEOP_I2C_SERIALBUS_V2
    419         PARSEOP_OPEN_PAREN
    420         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    421     ;
    422 
    423 InterruptTerm
    424     : PARSEOP_INTERRUPT
    425         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
    426         OptionalResourceType_First
    427         ',' InterruptTypeKeyword
    428         ',' InterruptLevel
    429         OptionalShareType
    430         OptionalByteConstExpr
    431         OptionalStringData
    432         OptionalNameString_Last
    433         PARSEOP_CLOSE_PAREN '{'
    434             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
    435                                         $4,$6,$8,$9,$10,$11,$12,$15);}
    436     | PARSEOP_INTERRUPT
    437         PARSEOP_OPEN_PAREN
    438         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    439     ;
    440 
    441 IOTerm
    442     : PARSEOP_IO
    443         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
    444         IODecodeKeyword
    445         ',' WordConstExpr
    446         ',' WordConstExpr
    447         ',' ByteConstExpr
    448         ',' ByteConstExpr
    449         OptionalNameString_Last
    450         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    451     | PARSEOP_IO
    452         PARSEOP_OPEN_PAREN
    453         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    454     ;
    455 
    456 IRQNoFlagsTerm
    457     : PARSEOP_IRQNOFLAGS
    458         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
    459         OptionalNameString_First
    460         PARSEOP_CLOSE_PAREN '{'
    461             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    462     | PARSEOP_IRQNOFLAGS
    463         PARSEOP_OPEN_PAREN
    464         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    465     ;
    466 
    467 IRQTerm
    468     : PARSEOP_IRQ
    469         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
    470         InterruptTypeKeyword
    471         ',' InterruptLevel
    472         OptionalShareType
    473         OptionalNameString_Last
    474         PARSEOP_CLOSE_PAREN '{'
    475             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    476     | PARSEOP_IRQ
    477         PARSEOP_OPEN_PAREN
    478         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    479     ;
    480 
    481 Memory24Term
    482     : PARSEOP_MEMORY24
    483         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
    484         OptionalReadWriteKeyword
    485         ',' WordConstExpr
    486         ',' WordConstExpr
    487         ',' WordConstExpr
    488         ',' WordConstExpr
    489         OptionalNameString_Last
    490         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    491     | PARSEOP_MEMORY24
    492         PARSEOP_OPEN_PAREN
    493         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    494     ;
    495 
    496 Memory32FixedTerm
    497     : PARSEOP_MEMORY32FIXED
    498         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
    499         OptionalReadWriteKeyword
    500         ',' DWordConstExpr
    501         ',' DWordConstExpr
    502         OptionalNameString_Last
    503         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
    504     | PARSEOP_MEMORY32FIXED
    505         PARSEOP_OPEN_PAREN
    506         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    507     ;
    508 
    509 Memory32Term
    510     : PARSEOP_MEMORY32
    511         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
    512         OptionalReadWriteKeyword
    513         ',' DWordConstExpr
    514         ',' DWordConstExpr
    515         ',' DWordConstExpr
    516         ',' DWordConstExpr
    517         OptionalNameString_Last
    518         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    519     | PARSEOP_MEMORY32
    520         PARSEOP_OPEN_PAREN
    521         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    522     ;
    523 
    524 PinConfigTerm
    525     : PARSEOP_PINCONFIG
    526         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
    527         OptionalShareType_First     /* 04: SharedType */
    528         ',' ByteConstExpr           /* 06: PinConfigType */
    529         ',' DWordConstExpr          /* 08: PinConfigValue */
    530         ',' StringData              /* 10: ResourceSource */
    531         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    532         OptionalResourceType        /* 12: ResourceType */
    533         OptionalNameString          /* 13: DescriptorName */
    534         OptionalBuffer_Last         /* 14: VendorData */
    535         PARSEOP_CLOSE_PAREN '{'
    536             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
    537                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
    538     | PARSEOP_PINCONFIG
    539         PARSEOP_OPEN_PAREN
    540         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    541     ;
    542 
    543 PinFunctionTerm
    544     : PARSEOP_PINFUNCTION
    545         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
    546         OptionalShareType_First     /* 04: SharedType */
    547         ',' PinConfigByte           /* 06: PinConfig */
    548         ',' WordConstExpr           /* 08: FunctionNumber */
    549         ',' StringData              /* 10: ResourceSource */
    550         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    551         OptionalResourceType        /* 12: ResourceType */
    552         OptionalNameString          /* 13: DescriptorName */
    553         OptionalBuffer_Last         /* 14: VendorData */
    554         PARSEOP_CLOSE_PAREN '{'
    555             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
    556                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
    557     | PARSEOP_PINFUNCTION
    558         PARSEOP_OPEN_PAREN
    559         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    560     ;
    561 
    562 ClockInputTerm
    563     : PARSEOP_CLOCKINPUT
    564         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
    565         DWordConstExpr              /* 04: FrequencyNumerator */
    566         ',' WordConstExpr           /* 06: FrequencyDivisor */
    567         ',' ClockScaleKeyword       /* 08: Scale */
    568         ',' ClockModeKeyword        /* 10: Mode*/
    569         OptionalStringData          /* 11: ResourceSource */
    570         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    571         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    572     | PARSEOP_CLOCKINPUT
    573         PARSEOP_OPEN_PAREN
    574         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    575     ;
    576 
    577 PinGroupTerm
    578     : PARSEOP_PINGROUP
    579         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
    580         StringData                  /* 04: ResourceLabel */
    581         OptionalProducerResourceType /* 05: ResourceType */
    582         OptionalNameString          /* 06: DescriptorName */
    583         OptionalBuffer_Last         /* 07: VendorData */
    584         PARSEOP_CLOSE_PAREN '{'
    585             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
    586     | PARSEOP_PINGROUP
    587         PARSEOP_OPEN_PAREN
    588         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    589     ;
    590 
    591 PinGroupConfigTerm
    592     : PARSEOP_PINGROUPCONFIG
    593         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
    594         OptionalShareType_First     /* 04: SharedType */
    595         ',' ByteConstExpr           /* 06: PinConfigType */
    596         ',' DWordConstExpr          /* 08: PinConfigValue */
    597         ',' StringData              /* 10: ResourceSource */
    598         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    599         ',' StringData              /* 13: ResourceSourceLabel */
    600         OptionalResourceType        /* 14: ResourceType */
    601         OptionalNameString          /* 15: DescriptorName */
    602         OptionalBuffer_Last         /* 16: VendorData */
    603         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
    604                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
    605     | PARSEOP_PINGROUPCONFIG
    606         PARSEOP_OPEN_PAREN
    607         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    608     ;
    609 
    610 PinGroupFunctionTerm
    611     : PARSEOP_PINGROUPFUNCTION
    612         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
    613         OptionalShareType_First     /* 04: SharedType */
    614         ',' WordConstExpr           /* 06: FunctionNumber */
    615         ',' StringData              /* 08: ResourceSource */
    616         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
    617         ',' StringData              /* 11: ResourceSourceLabel */
    618         OptionalResourceType        /* 12: ResourceType */
    619         OptionalNameString          /* 13: DescriptorName */
    620         OptionalBuffer_Last         /* 14: VendorData */
    621         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
    622                                         $4,$6,$8,$9,$11,$12,$13,$14);}
    623     | PARSEOP_PINGROUPFUNCTION
    624         PARSEOP_OPEN_PAREN
    625         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    626     ;
    627 
    628 QWordIOTerm
    629     : PARSEOP_QWORDIO
    630         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
    631         OptionalResourceType_First
    632         OptionalMinType
    633         OptionalMaxType
    634         OptionalDecodeType
    635         OptionalRangeType
    636         ',' QWordConstExpr
    637         ',' QWordConstExpr
    638         ',' QWordConstExpr
    639         ',' QWordConstExpr
    640         ',' QWordConstExpr
    641         OptionalByteConstExpr
    642         OptionalStringData
    643         OptionalNameString
    644         OptionalType
    645         OptionalTranslationType_Last
    646         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    647                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    648     | PARSEOP_QWORDIO
    649         PARSEOP_OPEN_PAREN
    650         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    651     ;
    652 
    653 QWordMemoryTerm
    654     : PARSEOP_QWORDMEMORY
    655         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
    656         OptionalResourceType_First
    657         OptionalDecodeType
    658         OptionalMinType
    659         OptionalMaxType
    660         OptionalMemType
    661         ',' OptionalReadWriteKeyword
    662         ',' QWordConstExpr
    663         ',' QWordConstExpr
    664         ',' QWordConstExpr
    665         ',' QWordConstExpr
    666         ',' QWordConstExpr
    667         OptionalByteConstExpr
    668         OptionalStringData
    669         OptionalNameString
    670         OptionalAddressRange
    671         OptionalType_Last
    672         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
    673                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    674     | PARSEOP_QWORDMEMORY
    675         PARSEOP_OPEN_PAREN
    676         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    677     ;
    678 
    679 QWordSpaceTerm
    680     : PARSEOP_QWORDSPACE
    681         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
    682         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    683         OptionalResourceType
    684         OptionalDecodeType
    685         OptionalMinType
    686         OptionalMaxType
    687         ',' ByteConstExpr
    688         ',' QWordConstExpr
    689         ',' QWordConstExpr
    690         ',' QWordConstExpr
    691         ',' QWordConstExpr
    692         ',' QWordConstExpr
    693         OptionalByteConstExpr
    694         OptionalStringData
    695         OptionalNameString_Last
    696         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    697                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    698     | PARSEOP_QWORDSPACE
    699         PARSEOP_OPEN_PAREN
    700         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    701     ;
    702 
    703 RegisterTerm
    704     : PARSEOP_REGISTER
    705         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
    706         AddressSpaceKeyword
    707         ',' ByteConstExpr
    708         ',' ByteConstExpr
    709         ',' QWordConstExpr
    710         OptionalAccessSize
    711         OptionalNameString_Last
    712         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    713     | PARSEOP_REGISTER
    714         PARSEOP_OPEN_PAREN
    715         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    716     ;
    717 
    718 SpiSerialBusTerm
    719     : PARSEOP_SPI_SERIALBUS
    720         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
    721         WordConstExpr               /* 04: DeviceSelection */
    722         OptionalDevicePolarity      /* 05: DevicePolarity */
    723         OptionalWireMode            /* 06: WireMode */
    724         ',' ByteConstExpr           /* 08: DataBitLength */
    725         OptionalSlaveMode           /* 09: SlaveMode */
    726         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    727         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    728         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    729         ',' StringData              /* 17: ResourceSource */
    730         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    731         OptionalResourceType        /* 19: ResourceType */
    732         OptionalNameString          /* 20: DescriptorName */
    733         OptionalBuffer_Last         /* 21: VendorData */
    734         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    735                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    736                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
    737     | PARSEOP_SPI_SERIALBUS
    738         PARSEOP_OPEN_PAREN
    739         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    740     ;
    741 
    742 SpiSerialBusTermV2
    743     : PARSEOP_SPI_SERIALBUS_V2
    744         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
    745         WordConstExpr               /* 04: DeviceSelection */
    746         OptionalDevicePolarity      /* 05: DevicePolarity */
    747         OptionalWireMode            /* 06: WireMode */
    748         ',' ByteConstExpr           /* 08: DataBitLength */
    749         OptionalSlaveMode           /* 09: SlaveMode */
    750         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    751         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    752         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    753         ',' StringData              /* 17: ResourceSource */
    754         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    755         OptionalResourceType        /* 19: ResourceType */
    756         OptionalNameString          /* 20: DescriptorName */
    757         OptionalShareType           /* 21: Share */
    758         OptionalBuffer_Last         /* 22: VendorData */
    759         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    760                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    761     | PARSEOP_SPI_SERIALBUS_V2
    762         PARSEOP_OPEN_PAREN
    763         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    764     ;
    765 
    766 StartDependentFnNoPriTerm
    767     : PARSEOP_STARTDEPENDENTFN_NOPRI
    768         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    769         PARSEOP_CLOSE_PAREN '{'
    770         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
    771     | PARSEOP_STARTDEPENDENTFN_NOPRI
    772         PARSEOP_OPEN_PAREN
    773         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    774     ;
    775 
    776 StartDependentFnTerm
    777     : PARSEOP_STARTDEPENDENTFN
    778         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
    779         ByteConstExpr
    780         ',' ByteConstExpr
    781         PARSEOP_CLOSE_PAREN '{'
    782         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
    783     | PARSEOP_STARTDEPENDENTFN
    784         PARSEOP_OPEN_PAREN
    785         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    786     ;
    787 
    788 UartSerialBusTerm
    789     : PARSEOP_UART_SERIALBUS
    790         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
    791         DWordConstExpr              /* 04: ConnectionSpeed */
    792         OptionalBitsPerByte         /* 05: BitsPerByte */
    793         OptionalStopBits            /* 06: StopBits */
    794         ',' ByteConstExpr           /* 08: LinesInUse */
    795         OptionalEndian              /* 09: Endianness */
    796         OptionalParityType          /* 10: Parity */
    797         OptionalFlowControl         /* 11: FlowControl */
    798         ',' WordConstExpr           /* 13: Rx BufferSize */
    799         ',' WordConstExpr           /* 15: Tx BufferSize */
    800         ',' StringData              /* 17: ResourceSource */
    801         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    802         OptionalResourceType        /* 19: ResourceType */
    803         OptionalNameString          /* 20: DescriptorName */
    804         OptionalBuffer_Last         /* 21: VendorData */
    805         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    806                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    807                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
    808     | PARSEOP_UART_SERIALBUS
    809         PARSEOP_OPEN_PAREN
    810         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    811     ;
    812 
    813 UartSerialBusTermV2
    814     : PARSEOP_UART_SERIALBUS_V2
    815         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
    816         DWordConstExpr              /* 04: ConnectionSpeed */
    817         OptionalBitsPerByte         /* 05: BitsPerByte */
    818         OptionalStopBits            /* 06: StopBits */
    819         ',' ByteConstExpr           /* 08: LinesInUse */
    820         OptionalEndian              /* 09: Endianness */
    821         OptionalParityType          /* 10: Parity */
    822         OptionalFlowControl         /* 11: FlowControl */
    823         ',' WordConstExpr           /* 13: Rx BufferSize */
    824         ',' WordConstExpr           /* 15: Tx BufferSize */
    825         ',' StringData              /* 17: ResourceSource */
    826         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    827         OptionalResourceType        /* 19: ResourceType */
    828         OptionalNameString          /* 20: DescriptorName */
    829         OptionalShareType           /* 21: Share */
    830         OptionalBuffer_Last         /* 22: VendorData */
    831         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    832                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    833     | PARSEOP_UART_SERIALBUS_V2
    834         PARSEOP_OPEN_PAREN
    835         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    836     ;
    837 
    838 VendorLongTerm
    839     : PARSEOP_VENDORLONG
    840         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
    841         OptionalNameString_First
    842         PARSEOP_CLOSE_PAREN '{'
    843             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    844     | PARSEOP_VENDORLONG
    845         PARSEOP_OPEN_PAREN
    846         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    847     ;
    848 
    849 VendorShortTerm
    850     : PARSEOP_VENDORSHORT
    851         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
    852         OptionalNameString_First
    853         PARSEOP_CLOSE_PAREN '{'
    854             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    855     | PARSEOP_VENDORSHORT
    856         PARSEOP_OPEN_PAREN
    857         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    858     ;
    859 
    860 WordBusNumberTerm
    861     : PARSEOP_WORDBUSNUMBER
    862         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
    863         OptionalResourceType_First
    864         OptionalMinType
    865         OptionalMaxType
    866         OptionalDecodeType
    867         ',' WordConstExpr
    868         ',' WordConstExpr
    869         ',' WordConstExpr
    870         ',' WordConstExpr
    871         ',' WordConstExpr
    872         OptionalByteConstExpr
    873         OptionalStringData
    874         OptionalNameString_Last
    875         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
    876                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
    877     | PARSEOP_WORDBUSNUMBER
    878         PARSEOP_OPEN_PAREN
    879         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    880     ;
    881 
    882 WordIOTerm
    883     : PARSEOP_WORDIO
    884         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
    885         OptionalResourceType_First
    886         OptionalMinType
    887         OptionalMaxType
    888         OptionalDecodeType
    889         OptionalRangeType
    890         ',' WordConstExpr
    891         ',' WordConstExpr
    892         ',' WordConstExpr
    893         ',' WordConstExpr
    894         ',' WordConstExpr
    895         OptionalByteConstExpr
    896         OptionalStringData
    897         OptionalNameString
    898         OptionalType
    899         OptionalTranslationType_Last
    900         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    901                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    902     | PARSEOP_WORDIO
    903         PARSEOP_OPEN_PAREN
    904         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    905     ;
    906 
    907 WordSpaceTerm
    908     : PARSEOP_WORDSPACE
    909         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
    910         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    911         OptionalResourceType
    912         OptionalDecodeType
    913         OptionalMinType
    914         OptionalMaxType
    915         ',' ByteConstExpr
    916         ',' WordConstExpr
    917         ',' WordConstExpr
    918         ',' WordConstExpr
    919         ',' WordConstExpr
    920         ',' WordConstExpr
    921         OptionalByteConstExpr
    922         OptionalStringData
    923         OptionalNameString_Last
    924         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    925                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    926     | PARSEOP_WORDSPACE
    927         PARSEOP_OPEN_PAREN
    928         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    929     ;
    930