Home | History | Annotate | Line # | Download | only in compiler
aslresources.y revision 1.1.1.3
      1 NoEcho('
      2 /******************************************************************************
      3  *
      4  * Module Name: aslresources.y - Bison/Yacc production rules for resources
      5  *
      6  *****************************************************************************/
      7 
      8 /*
      9  * Copyright (C) 2000 - 2016, Intel Corp.
     10  * All rights reserved.
     11  *
     12  * Redistribution and use in source and binary forms, with or without
     13  * modification, are permitted provided that the following conditions
     14  * are met:
     15  * 1. Redistributions of source code must retain the above copyright
     16  *    notice, this list of conditions, and the following disclaimer,
     17  *    without modification.
     18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  *    including a substantially similar Disclaimer requirement for further
     22  *    binary redistribution.
     23  * 3. Neither the names of the above-listed copyright holders nor the names
     24  *    of any contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * Alternatively, this software may be distributed under the terms of the
     28  * GNU General Public License ("GPL") version 2 as published by the Free
     29  * Software Foundation.
     30  *
     31  * NO WARRANTY
     32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  * POSSIBILITY OF SUCH DAMAGES.
     43  */
     44 
     45 ')
     46 
     47 
     48 /*******************************************************************************
     49  *
     50  * ASL Resource Template Terms
     51  *
     52  ******************************************************************************/
     53 
     54 /*
     55  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
     56  * Also, insert the EndTag at the end of the template.
     57  */
     58 ResourceTemplateTerm
     59     : PARSEOP_RESOURCETEMPLATE OptionalParentheses
     60         '{'
     61         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
     62                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
     63                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
     64                                           $4,
     65                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
     66     ;
     67 
     68 OptionalParentheses
     69     :                               {$$ = NULL;}
     70     | '(' ')'                       {$$ = NULL;}
     71     ;
     72 
     73 ResourceMacroList
     74     :                               {$$ = NULL;}
     75     | ResourceMacroList
     76         ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
     77     ;
     78 
     79 ResourceMacroTerm
     80     : DMATerm                       {}
     81     | DWordIOTerm                   {}
     82     | DWordMemoryTerm               {}
     83     | DWordSpaceTerm                {}
     84     | EndDependentFnTerm            {}
     85     | ExtendedIOTerm                {}
     86     | ExtendedMemoryTerm            {}
     87     | ExtendedSpaceTerm             {}
     88     | FixedDmaTerm                  {}
     89     | FixedIOTerm                   {}
     90     | GpioIntTerm                   {}
     91     | GpioIoTerm                    {}
     92     | I2cSerialBusTerm              {}
     93     | I2cSerialBusTermV2            {}
     94     | InterruptTerm                 {}
     95     | IOTerm                        {}
     96     | IRQNoFlagsTerm                {}
     97     | IRQTerm                       {}
     98     | Memory24Term                  {}
     99     | Memory32FixedTerm             {}
    100     | Memory32Term                  {}
    101     | QWordIOTerm                   {}
    102     | QWordMemoryTerm               {}
    103     | QWordSpaceTerm                {}
    104     | RegisterTerm                  {}
    105     | SpiSerialBusTerm              {}
    106     | SpiSerialBusTermV2            {}
    107     | StartDependentFnNoPriTerm     {}
    108     | StartDependentFnTerm          {}
    109     | UartSerialBusTerm             {}
    110     | UartSerialBusTermV2           {}
    111     | VendorLongTerm                {}
    112     | VendorShortTerm               {}
    113     | WordBusNumberTerm             {}
    114     | WordIOTerm                    {}
    115     | WordSpaceTerm                 {}
    116     ;
    117 
    118 DMATerm
    119     : PARSEOP_DMA '('               {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
    120         DMATypeKeyword
    121         OptionalBusMasterKeyword
    122         ',' XferTypeKeyword
    123         OptionalNameString_Last
    124         ')' '{'
    125             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    126     | PARSEOP_DMA '('
    127         error ')'                   {$$ = AslDoError(); yyclearin;}
    128     ;
    129 
    130 DWordIOTerm
    131     : PARSEOP_DWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
    132         OptionalResourceType_First
    133         OptionalMinType
    134         OptionalMaxType
    135         OptionalDecodeType
    136         OptionalRangeType
    137         ',' DWordConstExpr
    138         ',' DWordConstExpr
    139         ',' DWordConstExpr
    140         ',' DWordConstExpr
    141         ',' DWordConstExpr
    142         OptionalByteConstExpr
    143         OptionalStringData
    144         OptionalNameString
    145         OptionalType
    146         OptionalTranslationType_Last
    147         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    148                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    149     | PARSEOP_DWORDIO '('
    150         error ')'                   {$$ = AslDoError(); yyclearin;}
    151     ;
    152 
    153 DWordMemoryTerm
    154     : PARSEOP_DWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
    155         OptionalResourceType_First
    156         OptionalDecodeType
    157         OptionalMinType
    158         OptionalMaxType
    159         OptionalMemType
    160         ',' OptionalReadWriteKeyword
    161         ',' DWordConstExpr
    162         ',' DWordConstExpr
    163         ',' DWordConstExpr
    164         ',' DWordConstExpr
    165         ',' DWordConstExpr
    166         OptionalByteConstExpr
    167         OptionalStringData
    168         OptionalNameString
    169         OptionalAddressRange
    170         OptionalType_Last
    171         ')'                         {$$ = TrLinkChildren ($<n>3,16,
    172                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    173     | PARSEOP_DWORDMEMORY '('
    174         error ')'                   {$$ = AslDoError(); yyclearin;}
    175     ;
    176 
    177 DWordSpaceTerm
    178     : PARSEOP_DWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
    179         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    180         OptionalResourceType
    181         OptionalDecodeType
    182         OptionalMinType
    183         OptionalMaxType
    184         ',' ByteConstExpr
    185         ',' DWordConstExpr
    186         ',' DWordConstExpr
    187         ',' DWordConstExpr
    188         ',' DWordConstExpr
    189         ',' DWordConstExpr
    190         OptionalByteConstExpr
    191         OptionalStringData
    192         OptionalNameString_Last
    193         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    194                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    195     | PARSEOP_DWORDSPACE '('
    196         error ')'                   {$$ = AslDoError(); yyclearin;}
    197     ;
    198 
    199 EndDependentFnTerm
    200     : PARSEOP_ENDDEPENDENTFN '('
    201         ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
    202     | PARSEOP_ENDDEPENDENTFN '('
    203         error ')'                   {$$ = AslDoError(); yyclearin;}
    204     ;
    205 
    206 ExtendedIOTerm
    207     : PARSEOP_EXTENDEDIO '('        {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
    208         OptionalResourceType_First
    209         OptionalMinType
    210         OptionalMaxType
    211         OptionalDecodeType
    212         OptionalRangeType
    213         ',' QWordConstExpr
    214         ',' QWordConstExpr
    215         ',' QWordConstExpr
    216         ',' QWordConstExpr
    217         ',' QWordConstExpr
    218         OptionalQWordConstExpr
    219         OptionalNameString
    220         OptionalType
    221         OptionalTranslationType_Last
    222         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    223                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    224     | PARSEOP_EXTENDEDIO '('
    225         error ')'                   {$$ = AslDoError(); yyclearin;}
    226     ;
    227 
    228 ExtendedMemoryTerm
    229     : PARSEOP_EXTENDEDMEMORY '('    {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
    230         OptionalResourceType_First
    231         OptionalDecodeType
    232         OptionalMinType
    233         OptionalMaxType
    234         OptionalMemType
    235         ',' OptionalReadWriteKeyword
    236         ',' QWordConstExpr
    237         ',' QWordConstExpr
    238         ',' QWordConstExpr
    239         ',' QWordConstExpr
    240         ',' QWordConstExpr
    241         OptionalQWordConstExpr
    242         OptionalNameString
    243         OptionalAddressRange
    244         OptionalType_Last
    245         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    246                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    247     | PARSEOP_EXTENDEDMEMORY '('
    248         error ')'                   {$$ = AslDoError(); yyclearin;}
    249     ;
    250 
    251 ExtendedSpaceTerm
    252     : PARSEOP_EXTENDEDSPACE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
    253         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    254         OptionalResourceType
    255         OptionalDecodeType
    256         OptionalMinType
    257         OptionalMaxType
    258         ',' ByteConstExpr
    259         ',' QWordConstExpr
    260         ',' QWordConstExpr
    261         ',' QWordConstExpr
    262         ',' QWordConstExpr
    263         ',' QWordConstExpr
    264         OptionalQWordConstExpr
    265         OptionalNameString_Last
    266         ')'                         {$$ = TrLinkChildren ($<n>3,13,
    267                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    268     | PARSEOP_EXTENDEDSPACE '('
    269         error ')'                   {$$ = AslDoError(); yyclearin;}
    270     ;
    271 
    272 FixedDmaTerm
    273     : PARSEOP_FIXEDDMA '('          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
    274         WordConstExpr               /* 04: DMA RequestLines */
    275         ',' WordConstExpr           /* 06: DMA Channels */
    276         OptionalXferSize            /* 07: DMA TransferSize */
    277         OptionalNameString          /* 08: DescriptorName */
    278         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
    279     | PARSEOP_FIXEDDMA '('
    280         error ')'                   {$$ = AslDoError(); yyclearin;}
    281     ;
    282 
    283 FixedIOTerm
    284     : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
    285         WordConstExpr
    286         ',' ByteConstExpr
    287         OptionalNameString_Last
    288         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    289     | PARSEOP_FIXEDIO '('
    290         error ')'                   {$$ = AslDoError(); yyclearin;}
    291     ;
    292 
    293 GpioIntTerm
    294     : PARSEOP_GPIO_INT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
    295         InterruptTypeKeyword        /* 04: InterruptType */
    296         ',' InterruptLevel          /* 06: InterruptLevel */
    297         OptionalShareType           /* 07: SharedType */
    298         ',' PinConfigByte           /* 09: PinConfig */
    299         OptionalWordConstExpr       /* 10: DebounceTimeout */
    300         ',' StringData              /* 12: ResourceSource */
    301         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    302         OptionalResourceType        /* 14: ResourceType */
    303         OptionalNameString          /* 15: DescriptorName */
    304         OptionalBuffer_Last         /* 16: VendorData */
    305         ')' '{'
    306             DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,
    307                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    308     | PARSEOP_GPIO_INT '('
    309         error ')'                   {$$ = AslDoError(); yyclearin;}
    310     ;
    311 
    312 GpioIoTerm
    313     : PARSEOP_GPIO_IO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
    314         OptionalShareType_First     /* 04: SharedType */
    315         ',' PinConfigByte           /* 06: PinConfig */
    316         OptionalWordConstExpr       /* 07: DebounceTimeout */
    317         OptionalWordConstExpr       /* 08: DriveStrength */
    318         OptionalIoRestriction       /* 09: IoRestriction */
    319         ',' StringData              /* 11: ResourceSource */
    320         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    321         OptionalResourceType        /* 13: ResourceType */
    322         OptionalNameString          /* 14: DescriptorName */
    323         OptionalBuffer_Last         /* 15: VendorData */
    324         ')' '{'
    325             DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,
    326                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    327     | PARSEOP_GPIO_IO '('
    328         error ')'                   {$$ = AslDoError(); yyclearin;}
    329     ;
    330 
    331 I2cSerialBusTerm
    332     : PARSEOP_I2C_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
    333         WordConstExpr               /* 04: SlaveAddress */
    334         OptionalSlaveMode           /* 05: SlaveMode */
    335         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    336         OptionalAddressingMode      /* 08: AddressingMode */
    337         ',' StringData              /* 10: ResourceSource */
    338         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    339         OptionalResourceType        /* 12: ResourceType */
    340         OptionalNameString          /* 13: DescriptorName */
    341         OptionalBuffer_Last         /* 14: VendorData */
    342         ')'                         {$$ = TrLinkChildren ($<n>3,10,
    343                                         $4,$5,$7,$8,$10,$11,$12,$13,
    344                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
    345     | PARSEOP_I2C_SERIALBUS '('
    346         error ')'                   {$$ = AslDoError(); yyclearin;}
    347     ;
    348 
    349 I2cSerialBusTermV2
    350     : PARSEOP_I2C_SERIALBUS_V2 '('  {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS_V2);}
    351         WordConstExpr               /* 04: SlaveAddress */
    352         OptionalSlaveMode           /* 05: SlaveMode */
    353         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    354         OptionalAddressingMode      /* 08: AddressingMode */
    355         ',' StringData              /* 10: ResourceSource */
    356         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    357         OptionalResourceType        /* 12: ResourceType */
    358         OptionalNameString          /* 13: DescriptorName */
    359         OptionalShareType           /* 14: Share */
    360         OptionalBuffer_Last         /* 15: VendorData */
    361         ')'                         {$$ = TrLinkChildren ($<n>3,10,
    362                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
    363     | PARSEOP_I2C_SERIALBUS_V2 '('
    364         error ')'                   {$$ = AslDoError(); yyclearin;}
    365     ;
    366 
    367 InterruptTerm
    368     : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
    369         OptionalResourceType_First
    370         ',' InterruptTypeKeyword
    371         ',' InterruptLevel
    372         OptionalShareType
    373         OptionalByteConstExpr
    374         OptionalStringData
    375         OptionalNameString_Last
    376         ')' '{'
    377             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,
    378                                         $4,$6,$8,$9,$10,$11,$12,$15);}
    379     | PARSEOP_INTERRUPT '('
    380         error ')'                   {$$ = AslDoError(); yyclearin;}
    381     ;
    382 
    383 IOTerm
    384     : PARSEOP_IO '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
    385         IODecodeKeyword
    386         ',' WordConstExpr
    387         ',' WordConstExpr
    388         ',' ByteConstExpr
    389         ',' ByteConstExpr
    390         OptionalNameString_Last
    391         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    392     | PARSEOP_IO '('
    393         error ')'                   {$$ = AslDoError(); yyclearin;}
    394     ;
    395 
    396 IRQNoFlagsTerm
    397     : PARSEOP_IRQNOFLAGS '('        {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
    398         OptionalNameString_First
    399         ')' '{'
    400             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    401     | PARSEOP_IRQNOFLAGS '('
    402         error ')'                   {$$ = AslDoError(); yyclearin;}
    403     ;
    404 
    405 IRQTerm
    406     : PARSEOP_IRQ '('               {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
    407         InterruptTypeKeyword
    408         ',' InterruptLevel
    409         OptionalShareType
    410         OptionalNameString_Last
    411         ')' '{'
    412             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    413     | PARSEOP_IRQ '('
    414         error ')'                   {$$ = AslDoError(); yyclearin;}
    415     ;
    416 
    417 Memory24Term
    418     : PARSEOP_MEMORY24 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
    419         OptionalReadWriteKeyword
    420         ',' WordConstExpr
    421         ',' WordConstExpr
    422         ',' WordConstExpr
    423         ',' WordConstExpr
    424         OptionalNameString_Last
    425         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    426     | PARSEOP_MEMORY24 '('
    427         error ')'                   {$$ = AslDoError(); yyclearin;}
    428     ;
    429 
    430 Memory32FixedTerm
    431     : PARSEOP_MEMORY32FIXED '('     {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
    432         OptionalReadWriteKeyword
    433         ',' DWordConstExpr
    434         ',' DWordConstExpr
    435         OptionalNameString_Last
    436         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
    437     | PARSEOP_MEMORY32FIXED '('
    438         error ')'                   {$$ = AslDoError(); yyclearin;}
    439     ;
    440 
    441 Memory32Term
    442     : PARSEOP_MEMORY32 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
    443         OptionalReadWriteKeyword
    444         ',' DWordConstExpr
    445         ',' DWordConstExpr
    446         ',' DWordConstExpr
    447         ',' DWordConstExpr
    448         OptionalNameString_Last
    449         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    450     | PARSEOP_MEMORY32 '('
    451         error ')'                   {$$ = AslDoError(); yyclearin;}
    452     ;
    453 
    454 QWordIOTerm
    455     : PARSEOP_QWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
    456         OptionalResourceType_First
    457         OptionalMinType
    458         OptionalMaxType
    459         OptionalDecodeType
    460         OptionalRangeType
    461         ',' QWordConstExpr
    462         ',' QWordConstExpr
    463         ',' QWordConstExpr
    464         ',' QWordConstExpr
    465         ',' QWordConstExpr
    466         OptionalByteConstExpr
    467         OptionalStringData
    468         OptionalNameString
    469         OptionalType
    470         OptionalTranslationType_Last
    471         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    472                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    473     | PARSEOP_QWORDIO '('
    474         error ')'                   {$$ = AslDoError(); yyclearin;}
    475     ;
    476 
    477 QWordMemoryTerm
    478     : PARSEOP_QWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
    479         OptionalResourceType_First
    480         OptionalDecodeType
    481         OptionalMinType
    482         OptionalMaxType
    483         OptionalMemType
    484         ',' OptionalReadWriteKeyword
    485         ',' QWordConstExpr
    486         ',' QWordConstExpr
    487         ',' QWordConstExpr
    488         ',' QWordConstExpr
    489         ',' QWordConstExpr
    490         OptionalByteConstExpr
    491         OptionalStringData
    492         OptionalNameString
    493         OptionalAddressRange
    494         OptionalType_Last
    495         ')'                         {$$ = TrLinkChildren ($<n>3,16,
    496                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    497     | PARSEOP_QWORDMEMORY '('
    498         error ')'                   {$$ = AslDoError(); yyclearin;}
    499     ;
    500 
    501 QWordSpaceTerm
    502     : PARSEOP_QWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
    503         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    504         OptionalResourceType
    505         OptionalDecodeType
    506         OptionalMinType
    507         OptionalMaxType
    508         ',' ByteConstExpr
    509         ',' QWordConstExpr
    510         ',' QWordConstExpr
    511         ',' QWordConstExpr
    512         ',' QWordConstExpr
    513         ',' QWordConstExpr
    514         OptionalByteConstExpr
    515         OptionalStringData
    516         OptionalNameString_Last
    517         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    518                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    519     | PARSEOP_QWORDSPACE '('
    520         error ')'                   {$$ = AslDoError(); yyclearin;}
    521     ;
    522 
    523 RegisterTerm
    524     : PARSEOP_REGISTER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
    525         AddressSpaceKeyword
    526         ',' ByteConstExpr
    527         ',' ByteConstExpr
    528         ',' QWordConstExpr
    529         OptionalAccessSize
    530         OptionalNameString_Last
    531         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    532     | PARSEOP_REGISTER '('
    533         error ')'                   {$$ = AslDoError(); yyclearin;}
    534     ;
    535 
    536 SpiSerialBusTerm
    537     : PARSEOP_SPI_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
    538         WordConstExpr               /* 04: DeviceSelection */
    539         OptionalDevicePolarity      /* 05: DevicePolarity */
    540         OptionalWireMode            /* 06: WireMode */
    541         ',' ByteConstExpr           /* 08: DataBitLength */
    542         OptionalSlaveMode           /* 09: SlaveMode */
    543         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    544         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    545         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    546         ',' StringData              /* 17: ResourceSource */
    547         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    548         OptionalResourceType        /* 19: ResourceType */
    549         OptionalNameString          /* 20: DescriptorName */
    550         OptionalBuffer_Last         /* 21: VendorData */
    551         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    552                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    553                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    554     | PARSEOP_SPI_SERIALBUS '('
    555         error ')'                   {$$ = AslDoError(); yyclearin;}
    556     ;
    557 
    558 SpiSerialBusTermV2
    559     : PARSEOP_SPI_SERIALBUS_V2 '('  {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS_V2);}
    560         WordConstExpr               /* 04: DeviceSelection */
    561         OptionalDevicePolarity      /* 05: DevicePolarity */
    562         OptionalWireMode            /* 06: WireMode */
    563         ',' ByteConstExpr           /* 08: DataBitLength */
    564         OptionalSlaveMode           /* 09: SlaveMode */
    565         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    566         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    567         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    568         ',' StringData              /* 17: ResourceSource */
    569         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    570         OptionalResourceType        /* 19: ResourceType */
    571         OptionalNameString          /* 20: DescriptorName */
    572         OptionalShareType           /* 21: Share */
    573         OptionalBuffer_Last         /* 22: VendorData */
    574         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    575                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    576     | PARSEOP_SPI_SERIALBUS_V2 '('
    577         error ')'                   {$$ = AslDoError(); yyclearin;}
    578     ;
    579 
    580 StartDependentFnNoPriTerm
    581     : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    582         ')' '{'
    583         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
    584     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
    585         error ')'                   {$$ = AslDoError(); yyclearin;}
    586     ;
    587 
    588 StartDependentFnTerm
    589     : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
    590         ByteConstExpr
    591         ',' ByteConstExpr
    592         ')' '{'
    593         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
    594     | PARSEOP_STARTDEPENDENTFN '('
    595         error ')'                   {$$ = AslDoError(); yyclearin;}
    596     ;
    597 
    598 UartSerialBusTerm
    599     : PARSEOP_UART_SERIALBUS '('    {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
    600         DWordConstExpr              /* 04: ConnectionSpeed */
    601         OptionalBitsPerByte         /* 05: BitsPerByte */
    602         OptionalStopBits            /* 06: StopBits */
    603         ',' ByteConstExpr           /* 08: LinesInUse */
    604         OptionalEndian              /* 09: Endianess */
    605         OptionalParityType          /* 10: Parity */
    606         OptionalFlowControl         /* 11: FlowControl */
    607         ',' WordConstExpr           /* 13: Rx BufferSize */
    608         ',' WordConstExpr           /* 15: Tx BufferSize */
    609         ',' StringData              /* 17: ResourceSource */
    610         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    611         OptionalResourceType        /* 19: ResourceType */
    612         OptionalNameString          /* 20: DescriptorName */
    613         OptionalBuffer_Last         /* 21: VendorData */
    614         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    615                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    616                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    617     | PARSEOP_UART_SERIALBUS '('
    618         error ')'                   {$$ = AslDoError(); yyclearin;}
    619     ;
    620 
    621 UartSerialBusTermV2
    622     : PARSEOP_UART_SERIALBUS_V2 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS_V2);}
    623         DWordConstExpr              /* 04: ConnectionSpeed */
    624         OptionalBitsPerByte         /* 05: BitsPerByte */
    625         OptionalStopBits            /* 06: StopBits */
    626         ',' ByteConstExpr           /* 08: LinesInUse */
    627         OptionalEndian              /* 09: Endianess */
    628         OptionalParityType          /* 10: Parity */
    629         OptionalFlowControl         /* 11: FlowControl */
    630         ',' WordConstExpr           /* 13: Rx BufferSize */
    631         ',' WordConstExpr           /* 15: Tx BufferSize */
    632         ',' StringData              /* 17: ResourceSource */
    633         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    634         OptionalResourceType        /* 19: ResourceType */
    635         OptionalNameString          /* 20: DescriptorName */
    636         OptionalShareType           /* 21: Share */
    637         OptionalBuffer_Last         /* 22: VendorData */
    638         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    639                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    640     | PARSEOP_UART_SERIALBUS_V2 '('
    641         error ')'                   {$$ = AslDoError(); yyclearin;}
    642     ;
    643 
    644 VendorLongTerm
    645     : PARSEOP_VENDORLONG '('        {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
    646         OptionalNameString_First
    647         ')' '{'
    648             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    649     | PARSEOP_VENDORLONG '('
    650         error ')'                   {$$ = AslDoError(); yyclearin;}
    651     ;
    652 
    653 VendorShortTerm
    654     : PARSEOP_VENDORSHORT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
    655         OptionalNameString_First
    656         ')' '{'
    657             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    658     | PARSEOP_VENDORSHORT '('
    659         error ')'                   {$$ = AslDoError(); yyclearin;}
    660     ;
    661 
    662 WordBusNumberTerm
    663     : PARSEOP_WORDBUSNUMBER '('     {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
    664         OptionalResourceType_First
    665         OptionalMinType
    666         OptionalMaxType
    667         OptionalDecodeType
    668         ',' WordConstExpr
    669         ',' WordConstExpr
    670         ',' WordConstExpr
    671         ',' WordConstExpr
    672         ',' WordConstExpr
    673         OptionalByteConstExpr
    674         OptionalStringData
    675         OptionalNameString_Last
    676         ')'                         {$$ = TrLinkChildren ($<n>3,12,
    677                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
    678     | PARSEOP_WORDBUSNUMBER '('
    679         error ')'                   {$$ = AslDoError(); yyclearin;}
    680     ;
    681 
    682 WordIOTerm
    683     : PARSEOP_WORDIO '('            {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
    684         OptionalResourceType_First
    685         OptionalMinType
    686         OptionalMaxType
    687         OptionalDecodeType
    688         OptionalRangeType
    689         ',' WordConstExpr
    690         ',' WordConstExpr
    691         ',' WordConstExpr
    692         ',' WordConstExpr
    693         ',' WordConstExpr
    694         OptionalByteConstExpr
    695         OptionalStringData
    696         OptionalNameString
    697         OptionalType
    698         OptionalTranslationType_Last
    699         ')'                         {$$ = TrLinkChildren ($<n>3,15,
    700                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    701     | PARSEOP_WORDIO '('
    702         error ')'                   {$$ = AslDoError(); yyclearin;}
    703     ;
    704 
    705 WordSpaceTerm
    706     : PARSEOP_WORDSPACE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
    707         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    708         OptionalResourceType
    709         OptionalDecodeType
    710         OptionalMinType
    711         OptionalMaxType
    712         ',' ByteConstExpr
    713         ',' WordConstExpr
    714         ',' WordConstExpr
    715         ',' WordConstExpr
    716         ',' WordConstExpr
    717         ',' WordConstExpr
    718         OptionalByteConstExpr
    719         OptionalStringData
    720         OptionalNameString_Last
    721         ')'                         {$$ = TrLinkChildren ($<n>3,14,
    722                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    723     | PARSEOP_WORDSPACE '('
    724         error ')'                   {$$ = AslDoError(); yyclearin;}
    725     ;
    726