Home | History | Annotate | Line # | Download | only in compiler
      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  *
     12  * 1. Copyright Notice
     13  *
     14  * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
     15  * All rights reserved.
     16  *
     17  * 2. License
     18  *
     19  * 2.1. This is your license from Intel Corp. under its intellectual property
     20  * rights. You may have additional license terms from the party that provided
     21  * you this software, covering your right to use that party's intellectual
     22  * property rights.
     23  *
     24  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
     25  * copy of the source code appearing in this file ("Covered Code") an
     26  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
     27  * base code distributed originally by Intel ("Original Intel Code") to copy,
     28  * make derivatives, distribute, use and display any portion of the Covered
     29  * Code in any form, with the right to sublicense such rights; and
     30  *
     31  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
     32  * license (with the right to sublicense), under only those claims of Intel
     33  * patents that are infringed by the Original Intel Code, to make, use, sell,
     34  * offer to sell, and import the Covered Code and derivative works thereof
     35  * solely to the minimum extent necessary to exercise the above copyright
     36  * license, and in no event shall the patent license extend to any additions
     37  * to or modifications of the Original Intel Code. No other license or right
     38  * is granted directly or by implication, estoppel or otherwise;
     39  *
     40  * The above copyright and patent license is granted only if the following
     41  * conditions are met:
     42  *
     43  * 3. Conditions
     44  *
     45  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
     46  * Redistribution of source code of any substantial portion of the Covered
     47  * Code or modification with rights to further distribute source must include
     48  * the above Copyright Notice, the above License, this list of Conditions,
     49  * and the following Disclaimer and Export Compliance provision. In addition,
     50  * Licensee must cause all Covered Code to which Licensee contributes to
     51  * contain a file documenting the changes Licensee made to create that Covered
     52  * Code and the date of any change. Licensee must include in that file the
     53  * documentation of any changes made by any predecessor Licensee. Licensee
     54  * must include a prominent statement that the modification is derived,
     55  * directly or indirectly, from Original Intel Code.
     56  *
     57  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
     58  * Redistribution of source code of any substantial portion of the Covered
     59  * Code or modification without rights to further distribute source must
     60  * include the following Disclaimer and Export Compliance provision in the
     61  * documentation and/or other materials provided with distribution. In
     62  * addition, Licensee may not authorize further sublicense of source of any
     63  * portion of the Covered Code, and must include terms to the effect that the
     64  * license from Licensee to its licensee is limited to the intellectual
     65  * property embodied in the software Licensee provides to its licensee, and
     66  * not to intellectual property embodied in modifications its licensee may
     67  * make.
     68  *
     69  * 3.3. Redistribution of Executable. Redistribution in executable form of any
     70  * substantial portion of the Covered Code or modification must reproduce the
     71  * above Copyright Notice, and the following Disclaimer and Export Compliance
     72  * provision in the documentation and/or other materials provided with the
     73  * distribution.
     74  *
     75  * 3.4. Intel retains all right, title, and interest in and to the Original
     76  * Intel Code.
     77  *
     78  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
     79  * Intel shall be used in advertising or otherwise to promote the sale, use or
     80  * other dealings in products derived from or relating to the Covered Code
     81  * without prior written authorization from Intel.
     82  *
     83  * 4. Disclaimer and Export Compliance
     84  *
     85  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
     86  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
     87  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
     88  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
     89  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
     90  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
     91  * PARTICULAR PURPOSE.
     92  *
     93  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
     94  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
     95  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
     96  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
     97  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
     98  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
     99  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
    100  * LIMITED REMEDY.
    101  *
    102  * 4.3. Licensee shall not export, either directly or indirectly, any of this
    103  * software or system incorporating such software without first obtaining any
    104  * required license or other approval from the U. S. Department of Commerce or
    105  * any other agency or department of the United States Government. In the
    106  * event Licensee exports any such software from the United States or
    107  * re-exports any such software from a foreign destination, Licensee shall
    108  * ensure that the distribution and export/re-export of the software is in
    109  * compliance with all laws, regulations, orders, or other restrictions of the
    110  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
    111  * any of its subsidiaries will export/re-export any technical data, process,
    112  * software, or service, directly or indirectly, to any country for which the
    113  * United States government or any agency thereof requires an export license,
    114  * other governmental approval, or letter of assurance, without first obtaining
    115  * such license, approval or letter.
    116  *
    117  *****************************************************************************
    118  *
    119  * Alternatively, you may choose to be licensed under the terms of the
    120  * following license:
    121  *
    122  * Redistribution and use in source and binary forms, with or without
    123  * modification, are permitted provided that the following conditions
    124  * are met:
    125  * 1. Redistributions of source code must retain the above copyright
    126  *    notice, this list of conditions, and the following disclaimer,
    127  *    without modification.
    128  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
    129  *    substantially similar to the "NO WARRANTY" disclaimer below
    130  *    ("Disclaimer") and any redistribution must be conditioned upon
    131  *    including a substantially similar Disclaimer requirement for further
    132  *    binary redistribution.
    133  * 3. Neither the names of the above-listed copyright holders nor the names
    134  *    of any contributors may be used to endorse or promote products derived
    135  *    from this software without specific prior written permission.
    136  *
    137  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    138  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    139  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    140  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    141  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    142  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    143  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    144  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    145  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    146  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    147  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    148  *
    149  * Alternatively, you may choose to be licensed under the terms of the
    150  * GNU General Public License ("GPL") version 2 as published by the Free
    151  * Software Foundation.
    152  *
    153  *****************************************************************************/
    154 
    155 ')
    156 
    157 
    158 /*******************************************************************************
    159  *
    160  * ASL Resource Template Terms
    161  *
    162  ******************************************************************************/
    163 
    164 /*
    165  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
    166  * Also, insert the EndTag at the end of the template.
    167  */
    168 ResourceTemplateTerm
    169     : PARSEOP_RESOURCETEMPLATE      {COMMENT_CAPTURE_OFF;}
    170         OptionalParentheses
    171         '{'
    172         ResourceMacroList '}'       {$$ = TrCreateOp (PARSEOP_RESOURCETEMPLATE,4,
    173                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
    174                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
    175                                           $5,
    176                                           TrCreateLeafOp (PARSEOP_ENDTAG));
    177                                      COMMENT_CAPTURE_ON;}
    178     ;
    179 
    180 OptionalParentheses
    181     :                               {$$ = NULL;}
    182     | PARSEOP_OPEN_PAREN
    183         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
    184     ;
    185 
    186 ResourceMacroList
    187     :                               {$$ = NULL;}
    188     | ResourceMacroList
    189         ResourceMacroTerm           {$$ = TrLinkPeerOp ($1,$2);}
    190     ;
    191 
    192 ResourceMacroTerm
    193     : Csi2SerialBusTerm             {}
    194     | DMATerm                       {}
    195     | DWordIOTerm                   {}
    196     | DWordMemoryTerm               {}
    197     | DWordPccTerm                  {}
    198     | DWordSpaceTerm                {}
    199     | EndDependentFnTerm            {}
    200     | ExtendedIOTerm                {}
    201     | ExtendedMemoryTerm            {}
    202     | ExtendedSpaceTerm             {}
    203     | FixedDmaTerm                  {}
    204     | FixedIOTerm                   {}
    205     | GpioIntTerm                   {}
    206     | GpioIoTerm                    {}
    207     | I2cSerialBusTerm              {}
    208     | I2cSerialBusTermV2            {}
    209     | InterruptTerm                 {}
    210     | IOTerm                        {}
    211     | IRQNoFlagsTerm                {}
    212     | IRQTerm                       {}
    213     | Memory24Term                  {}
    214     | Memory32FixedTerm             {}
    215     | Memory32Term                  {}
    216     | PinConfigTerm                 {}
    217     | PinFunctionTerm               {}
    218     | ClockInputTerm                {}
    219     | PinGroupTerm                  {}
    220     | PinGroupConfigTerm            {}
    221     | PinGroupFunctionTerm          {}
    222     | QWordIOTerm                   {}
    223     | QWordMemoryTerm               {}
    224     | QWordPccTerm                  {}
    225     | QWordSpaceTerm                {}
    226     | RegisterTerm                  {}
    227     | SpiSerialBusTerm              {}
    228     | SpiSerialBusTermV2            {}
    229     | StartDependentFnNoPriTerm     {}
    230     | StartDependentFnTerm          {}
    231     | UartSerialBusTerm             {}
    232     | UartSerialBusTermV2           {}
    233     | VendorLongTerm                {}
    234     | VendorShortTerm               {}
    235     | WordBusNumberTerm             {}
    236     | WordIOTerm                    {}
    237     | WordPccTerm                   {}
    238     | WordSpaceTerm                 {}
    239     ;
    240 
    241 Csi2SerialBusTerm
    242     : PARSEOP_CSI2_SERIALBUS
    243         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
    244         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
    245         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
    246         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
    247         ',' StringData              /* 12: ResourceSource */
    248         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
    249         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
    250         OptionalNameString          /* 16: DescriptorName */
    251         OptionalBuffer_Last         /* 17: VendorData */
    252         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
    253                                         $4,$7,$9,$12,$14,$15,$16,$17);}
    254     | PARSEOP_CSI2_SERIALBUS
    255         PARSEOP_OPEN_PAREN
    256         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    257 
    258 DMATerm
    259     : PARSEOP_DMA
    260         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
    261         DMATypeKeyword
    262         OptionalBusMasterKeyword
    263         ',' XferTypeKeyword
    264         OptionalNameString_Last
    265         PARSEOP_CLOSE_PAREN '{'
    266             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    267     | PARSEOP_DMA
    268         PARSEOP_OPEN_PAREN
    269         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    270     ;
    271 
    272 DWordIOTerm
    273     : PARSEOP_DWORDIO
    274         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
    275         OptionalResourceType_First
    276         OptionalMinType
    277         OptionalMaxType
    278         OptionalDecodeType
    279         OptionalRangeType
    280         ',' DWordConstExpr
    281         ',' DWordConstExpr
    282         ',' DWordConstExpr
    283         ',' DWordConstExpr
    284         ',' DWordConstExpr
    285         OptionalByteConstExpr
    286         OptionalStringData
    287         OptionalNameString
    288         OptionalType
    289         OptionalTranslationType_Last
    290         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    291                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    292     | PARSEOP_DWORDIO
    293         PARSEOP_OPEN_PAREN
    294         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    295     ;
    296 
    297 DWordMemoryTerm
    298     : PARSEOP_DWORDMEMORY
    299         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
    300         OptionalResourceType_First
    301         OptionalDecodeType
    302         OptionalMinType
    303         OptionalMaxType
    304         OptionalMemType
    305         ',' OptionalReadWriteKeyword
    306         ',' DWordConstExpr
    307         ',' DWordConstExpr
    308         ',' DWordConstExpr
    309         ',' DWordConstExpr
    310         ',' DWordConstExpr
    311         OptionalByteConstExpr
    312         OptionalStringData
    313         OptionalNameString
    314         OptionalAddressRange
    315         OptionalType_Last
    316         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
    317                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    318     | PARSEOP_DWORDMEMORY
    319         PARSEOP_OPEN_PAREN
    320         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    321     ;
    322 
    323 DWordPccTerm
    324     : PARSEOP_DWORDPCC
    325         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
    326         ByteConstExpr
    327         OptionalByteConstExpr
    328         OptionalStringData
    329         OptionalNameString_Last
    330         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
    331                                                         $4,$5,$6,$7);}
    332     | PARSEOP_DWORDPCC
    333         PARSEOP_OPEN_PAREN
    334         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    335     ;
    336 
    337 DWordSpaceTerm
    338     : PARSEOP_DWORDSPACE
    339         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
    340         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    341         OptionalResourceType
    342         OptionalDecodeType
    343         OptionalMinType
    344         OptionalMaxType
    345         ',' ByteConstExpr
    346         ',' DWordConstExpr
    347         ',' DWordConstExpr
    348         ',' DWordConstExpr
    349         ',' DWordConstExpr
    350         ',' DWordConstExpr
    351         OptionalByteConstExpr
    352         OptionalStringData
    353         OptionalNameString_Last
    354         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    355                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    356     | PARSEOP_DWORDSPACE
    357         PARSEOP_OPEN_PAREN
    358         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    359     ;
    360 
    361 EndDependentFnTerm
    362     : PARSEOP_ENDDEPENDENTFN
    363         PARSEOP_OPEN_PAREN
    364         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
    365     | PARSEOP_ENDDEPENDENTFN
    366         PARSEOP_OPEN_PAREN
    367         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    368     ;
    369 
    370 ExtendedIOTerm
    371     : PARSEOP_EXTENDEDIO
    372         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
    373         OptionalResourceType_First
    374         OptionalMinType
    375         OptionalMaxType
    376         OptionalDecodeType
    377         OptionalRangeType
    378         ',' QWordConstExpr
    379         ',' QWordConstExpr
    380         ',' QWordConstExpr
    381         ',' QWordConstExpr
    382         ',' QWordConstExpr
    383         OptionalQWordConstExpr
    384         OptionalNameString
    385         OptionalType
    386         OptionalTranslationType_Last
    387         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    388                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    389     | PARSEOP_EXTENDEDIO
    390         PARSEOP_OPEN_PAREN
    391         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    392     ;
    393 
    394 ExtendedMemoryTerm
    395     : PARSEOP_EXTENDEDMEMORY
    396         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
    397         OptionalResourceType_First
    398         OptionalDecodeType
    399         OptionalMinType
    400         OptionalMaxType
    401         OptionalMemType
    402         ',' OptionalReadWriteKeyword
    403         ',' QWordConstExpr
    404         ',' QWordConstExpr
    405         ',' QWordConstExpr
    406         ',' QWordConstExpr
    407         ',' QWordConstExpr
    408         OptionalQWordConstExpr
    409         OptionalNameString
    410         OptionalAddressRange
    411         OptionalType_Last
    412         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    413                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    414     | PARSEOP_EXTENDEDMEMORY
    415         PARSEOP_OPEN_PAREN
    416         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    417     ;
    418 
    419 ExtendedSpaceTerm
    420     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
    421         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    422         OptionalResourceType
    423         OptionalDecodeType
    424         OptionalMinType
    425         OptionalMaxType
    426         ',' ByteConstExpr
    427         ',' QWordConstExpr
    428         ',' QWordConstExpr
    429         ',' QWordConstExpr
    430         ',' QWordConstExpr
    431         ',' QWordConstExpr
    432         OptionalQWordConstExpr
    433         OptionalNameString_Last
    434         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
    435                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    436     | PARSEOP_EXTENDEDSPACE
    437         PARSEOP_OPEN_PAREN
    438         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    439     ;
    440 
    441 FixedDmaTerm
    442     : PARSEOP_FIXEDDMA
    443         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
    444         WordConstExpr               /* 04: DMA RequestLines */
    445         ',' WordConstExpr           /* 06: DMA Channels */
    446         OptionalXferSize            /* 07: DMA TransferSize */
    447         OptionalNameString          /* 08: DescriptorName */
    448         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
    449     | PARSEOP_FIXEDDMA
    450         PARSEOP_OPEN_PAREN
    451         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    452     ;
    453 
    454 FixedIOTerm
    455     : PARSEOP_FIXEDIO
    456         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
    457         WordConstExpr
    458         ',' ByteConstExpr
    459         OptionalNameString_Last
    460         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
    461     | PARSEOP_FIXEDIO
    462         PARSEOP_OPEN_PAREN
    463         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    464     ;
    465 
    466 GpioIntTerm
    467     : PARSEOP_GPIO_INT
    468         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
    469         InterruptTypeKeyword        /* 04: InterruptType */
    470         ',' InterruptLevel          /* 06: InterruptLevel */
    471         OptionalShareType           /* 07: SharedType */
    472         ',' PinConfigByte           /* 09: PinConfig */
    473         OptionalWordConstExpr       /* 10: DebounceTimeout */
    474         ',' StringData              /* 12: ResourceSource */
    475         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    476         OptionalResourceType        /* 14: ResourceType */
    477         OptionalNameString          /* 15: DescriptorName */
    478         OptionalBuffer_Last         /* 16: VendorData */
    479         PARSEOP_CLOSE_PAREN '{'
    480             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
    481                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    482     | PARSEOP_GPIO_INT
    483         PARSEOP_OPEN_PAREN
    484         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    485     ;
    486 
    487 GpioIoTerm
    488     : PARSEOP_GPIO_IO
    489         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
    490         OptionalShareType_First     /* 04: SharedType */
    491         ',' PinConfigByte           /* 06: PinConfig */
    492         OptionalWordConstExpr       /* 07: DebounceTimeout */
    493         OptionalWordConstExpr       /* 08: DriveStrength */
    494         OptionalIoRestriction       /* 09: IoRestriction */
    495         ',' StringData              /* 11: ResourceSource */
    496         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    497         OptionalResourceType        /* 13: ResourceType */
    498         OptionalNameString          /* 14: DescriptorName */
    499         OptionalBuffer_Last         /* 15: VendorData */
    500         PARSEOP_CLOSE_PAREN '{'
    501             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
    502                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    503     | PARSEOP_GPIO_IO
    504         PARSEOP_OPEN_PAREN
    505         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    506     ;
    507 
    508 I2cSerialBusTerm
    509     : PARSEOP_I2C_SERIALBUS
    510         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
    511         WordConstExpr               /* 04: SlaveAddress */
    512         OptionalSlaveMode           /* 05: SlaveMode */
    513         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    514         OptionalAddressingMode      /* 08: AddressingMode */
    515         ',' StringData              /* 10: ResourceSource */
    516         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    517         OptionalResourceType        /* 12: ResourceType */
    518         OptionalNameString          /* 13: DescriptorName */
    519         OptionalBuffer_Last         /* 14: VendorData */
    520         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
    521                                         $4,$5,$7,$8,$10,$11,$12,$13,
    522                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
    523     | PARSEOP_I2C_SERIALBUS
    524         PARSEOP_OPEN_PAREN
    525         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    526     ;
    527 
    528 I2cSerialBusTermV2
    529     : PARSEOP_I2C_SERIALBUS_V2
    530         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
    531         WordConstExpr               /* 04: SlaveAddress */
    532         OptionalSlaveMode           /* 05: SlaveMode */
    533         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    534         OptionalAddressingMode      /* 08: AddressingMode */
    535         ',' StringData              /* 10: ResourceSource */
    536         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    537         OptionalResourceType        /* 12: ResourceType */
    538         OptionalNameString          /* 13: DescriptorName */
    539         OptionalShareType           /* 14: Share */
    540         OptionalBuffer_Last         /* 15: VendorData */
    541         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
    542                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
    543     | PARSEOP_I2C_SERIALBUS_V2
    544         PARSEOP_OPEN_PAREN
    545         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    546     ;
    547 
    548 InterruptTerm
    549     : PARSEOP_INTERRUPT
    550         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
    551         OptionalResourceType_First
    552         ',' InterruptTypeKeyword
    553         ',' InterruptLevel
    554         OptionalShareType
    555         OptionalByteConstExpr
    556         OptionalStringData
    557         OptionalNameString_Last
    558         PARSEOP_CLOSE_PAREN '{'
    559             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
    560                                         $4,$6,$8,$9,$10,$11,$12,$15);}
    561     | PARSEOP_INTERRUPT
    562         PARSEOP_OPEN_PAREN
    563         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    564     ;
    565 
    566 IOTerm
    567     : PARSEOP_IO
    568         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
    569         IODecodeKeyword
    570         ',' WordConstExpr
    571         ',' WordConstExpr
    572         ',' ByteConstExpr
    573         ',' ByteConstExpr
    574         OptionalNameString_Last
    575         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    576     | PARSEOP_IO
    577         PARSEOP_OPEN_PAREN
    578         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    579     ;
    580 
    581 IRQNoFlagsTerm
    582     : PARSEOP_IRQNOFLAGS
    583         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
    584         OptionalNameString_First
    585         PARSEOP_CLOSE_PAREN '{'
    586             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    587     | PARSEOP_IRQNOFLAGS
    588         PARSEOP_OPEN_PAREN
    589         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    590     ;
    591 
    592 IRQTerm
    593     : PARSEOP_IRQ
    594         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
    595         InterruptTypeKeyword
    596         ',' InterruptLevel
    597         OptionalShareType
    598         OptionalNameString_Last
    599         PARSEOP_CLOSE_PAREN '{'
    600             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    601     | PARSEOP_IRQ
    602         PARSEOP_OPEN_PAREN
    603         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    604     ;
    605 
    606 Memory24Term
    607     : PARSEOP_MEMORY24
    608         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
    609         OptionalReadWriteKeyword
    610         ',' WordConstExpr
    611         ',' WordConstExpr
    612         ',' WordConstExpr
    613         ',' WordConstExpr
    614         OptionalNameString_Last
    615         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    616     | PARSEOP_MEMORY24
    617         PARSEOP_OPEN_PAREN
    618         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    619     ;
    620 
    621 Memory32FixedTerm
    622     : PARSEOP_MEMORY32FIXED
    623         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
    624         OptionalReadWriteKeyword
    625         ',' DWordConstExpr
    626         ',' DWordConstExpr
    627         OptionalNameString_Last
    628         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
    629     | PARSEOP_MEMORY32FIXED
    630         PARSEOP_OPEN_PAREN
    631         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    632     ;
    633 
    634 Memory32Term
    635     : PARSEOP_MEMORY32
    636         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
    637         OptionalReadWriteKeyword
    638         ',' DWordConstExpr
    639         ',' DWordConstExpr
    640         ',' DWordConstExpr
    641         ',' DWordConstExpr
    642         OptionalNameString_Last
    643         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    644     | PARSEOP_MEMORY32
    645         PARSEOP_OPEN_PAREN
    646         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    647     ;
    648 
    649 PinConfigTerm
    650     : PARSEOP_PINCONFIG
    651         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
    652         OptionalShareType_First     /* 04: SharedType */
    653         ',' ByteConstExpr           /* 06: PinConfigType */
    654         ',' DWordConstExpr          /* 08: PinConfigValue */
    655         ',' StringData              /* 10: ResourceSource */
    656         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    657         OptionalResourceType        /* 12: ResourceType */
    658         OptionalNameString          /* 13: DescriptorName */
    659         OptionalBuffer_Last         /* 14: VendorData */
    660         PARSEOP_CLOSE_PAREN '{'
    661             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
    662                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
    663     | PARSEOP_PINCONFIG
    664         PARSEOP_OPEN_PAREN
    665         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    666     ;
    667 
    668 PinFunctionTerm
    669     : PARSEOP_PINFUNCTION
    670         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
    671         OptionalShareType_First     /* 04: SharedType */
    672         ',' PinConfigByte           /* 06: PinConfig */
    673         ',' WordConstExpr           /* 08: FunctionNumber */
    674         ',' StringData              /* 10: ResourceSource */
    675         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    676         OptionalResourceType        /* 12: ResourceType */
    677         OptionalNameString          /* 13: DescriptorName */
    678         OptionalBuffer_Last         /* 14: VendorData */
    679         PARSEOP_CLOSE_PAREN '{'
    680             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
    681                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
    682     | PARSEOP_PINFUNCTION
    683         PARSEOP_OPEN_PAREN
    684         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    685     ;
    686 
    687 ClockInputTerm
    688     : PARSEOP_CLOCKINPUT
    689         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
    690         DWordConstExpr              /* 04: FrequencyNumerator */
    691         ',' WordConstExpr           /* 06: FrequencyDivisor */
    692         ',' ClockScaleKeyword       /* 08: Scale */
    693         ',' ClockModeKeyword        /* 10: Mode*/
    694         OptionalStringData          /* 11: ResourceSource */
    695         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    696         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    697     | PARSEOP_CLOCKINPUT
    698         PARSEOP_OPEN_PAREN
    699         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    700     ;
    701 
    702 PinGroupTerm
    703     : PARSEOP_PINGROUP
    704         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
    705         StringData                  /* 04: ResourceLabel */
    706         OptionalProducerResourceType /* 05: ResourceType */
    707         OptionalNameString          /* 06: DescriptorName */
    708         OptionalBuffer_Last         /* 07: VendorData */
    709         PARSEOP_CLOSE_PAREN '{'
    710             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
    711     | PARSEOP_PINGROUP
    712         PARSEOP_OPEN_PAREN
    713         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    714     ;
    715 
    716 PinGroupConfigTerm
    717     : PARSEOP_PINGROUPCONFIG
    718         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
    719         OptionalShareType_First     /* 04: SharedType */
    720         ',' ByteConstExpr           /* 06: PinConfigType */
    721         ',' DWordConstExpr          /* 08: PinConfigValue */
    722         ',' StringData              /* 10: ResourceSource */
    723         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    724         ',' StringData              /* 13: ResourceSourceLabel */
    725         OptionalResourceType        /* 14: ResourceType */
    726         OptionalNameString          /* 15: DescriptorName */
    727         OptionalBuffer_Last         /* 16: VendorData */
    728         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
    729                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
    730     | PARSEOP_PINGROUPCONFIG
    731         PARSEOP_OPEN_PAREN
    732         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    733     ;
    734 
    735 PinGroupFunctionTerm
    736     : PARSEOP_PINGROUPFUNCTION
    737         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
    738         OptionalShareType_First     /* 04: SharedType */
    739         ',' WordConstExpr           /* 06: FunctionNumber */
    740         ',' StringData              /* 08: ResourceSource */
    741         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
    742         ',' StringData              /* 11: ResourceSourceLabel */
    743         OptionalResourceType        /* 12: ResourceType */
    744         OptionalNameString          /* 13: DescriptorName */
    745         OptionalBuffer_Last         /* 14: VendorData */
    746         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
    747                                         $4,$6,$8,$9,$11,$12,$13,$14);}
    748     | PARSEOP_PINGROUPFUNCTION
    749         PARSEOP_OPEN_PAREN
    750         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    751     ;
    752 
    753 QWordIOTerm
    754     : PARSEOP_QWORDIO
    755         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
    756         OptionalResourceType_First
    757         OptionalMinType
    758         OptionalMaxType
    759         OptionalDecodeType
    760         OptionalRangeType
    761         ',' QWordConstExpr
    762         ',' QWordConstExpr
    763         ',' QWordConstExpr
    764         ',' QWordConstExpr
    765         ',' QWordConstExpr
    766         OptionalByteConstExpr
    767         OptionalStringData
    768         OptionalNameString
    769         OptionalType
    770         OptionalTranslationType_Last
    771         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    772                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    773     | PARSEOP_QWORDIO
    774         PARSEOP_OPEN_PAREN
    775         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    776     ;
    777 
    778 QWordMemoryTerm
    779     : PARSEOP_QWORDMEMORY
    780         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
    781         OptionalResourceType_First
    782         OptionalDecodeType
    783         OptionalMinType
    784         OptionalMaxType
    785         OptionalMemType
    786         ',' OptionalReadWriteKeyword
    787         ',' QWordConstExpr
    788         ',' QWordConstExpr
    789         ',' QWordConstExpr
    790         ',' QWordConstExpr
    791         ',' QWordConstExpr
    792         OptionalByteConstExpr
    793         OptionalStringData
    794         OptionalNameString
    795         OptionalAddressRange
    796         OptionalType_Last
    797         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
    798                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    799     | PARSEOP_QWORDMEMORY
    800         PARSEOP_OPEN_PAREN
    801         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    802     ;
    803 
    804 QWordPccTerm
    805     : PARSEOP_QWORDPCC
    806         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
    807         ByteConstExpr
    808         OptionalByteConstExpr
    809         OptionalStringData
    810         OptionalNameString_Last
    811         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
    812                                                         $4,$5,$6,$7);}
    813     | PARSEOP_QWORDPCC
    814         PARSEOP_OPEN_PAREN
    815         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    816     ;
    817 
    818 QWordSpaceTerm
    819     : PARSEOP_QWORDSPACE
    820         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
    821         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    822         OptionalResourceType
    823         OptionalDecodeType
    824         OptionalMinType
    825         OptionalMaxType
    826         ',' ByteConstExpr
    827         ',' QWordConstExpr
    828         ',' QWordConstExpr
    829         ',' QWordConstExpr
    830         ',' QWordConstExpr
    831         ',' QWordConstExpr
    832         OptionalByteConstExpr
    833         OptionalStringData
    834         OptionalNameString_Last
    835         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    836                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    837     | PARSEOP_QWORDSPACE
    838         PARSEOP_OPEN_PAREN
    839         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    840     ;
    841 
    842 RegisterTerm
    843     : PARSEOP_REGISTER
    844         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
    845         AddressSpaceKeyword
    846         ',' ByteConstExpr
    847         ',' ByteConstExpr
    848         ',' QWordConstExpr
    849         OptionalAccessSize
    850         OptionalNameString_Last
    851         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    852     | PARSEOP_REGISTER
    853         PARSEOP_OPEN_PAREN
    854         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    855     ;
    856 
    857 SpiSerialBusTerm
    858     : PARSEOP_SPI_SERIALBUS
    859         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
    860         WordConstExpr               /* 04: DeviceSelection */
    861         OptionalDevicePolarity      /* 05: DevicePolarity */
    862         OptionalWireMode            /* 06: WireMode */
    863         ',' ByteConstExpr           /* 08: DataBitLength */
    864         OptionalSlaveMode           /* 09: SlaveMode */
    865         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    866         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    867         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    868         ',' StringData              /* 17: ResourceSource */
    869         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    870         OptionalResourceType        /* 19: ResourceType */
    871         OptionalNameString          /* 20: DescriptorName */
    872         OptionalBuffer_Last         /* 21: VendorData */
    873         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    874                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    875                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
    876     | PARSEOP_SPI_SERIALBUS
    877         PARSEOP_OPEN_PAREN
    878         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    879     ;
    880 
    881 SpiSerialBusTermV2
    882     : PARSEOP_SPI_SERIALBUS_V2
    883         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
    884         WordConstExpr               /* 04: DeviceSelection */
    885         OptionalDevicePolarity      /* 05: DevicePolarity */
    886         OptionalWireMode            /* 06: WireMode */
    887         ',' ByteConstExpr           /* 08: DataBitLength */
    888         OptionalSlaveMode           /* 09: SlaveMode */
    889         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    890         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    891         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    892         ',' StringData              /* 17: ResourceSource */
    893         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    894         OptionalResourceType        /* 19: ResourceType */
    895         OptionalNameString          /* 20: DescriptorName */
    896         OptionalShareType           /* 21: Share */
    897         OptionalBuffer_Last         /* 22: VendorData */
    898         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
    899                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    900     | PARSEOP_SPI_SERIALBUS_V2
    901         PARSEOP_OPEN_PAREN
    902         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    903     ;
    904 
    905 StartDependentFnNoPriTerm
    906     : PARSEOP_STARTDEPENDENTFN_NOPRI
    907         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    908         PARSEOP_CLOSE_PAREN '{'
    909         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
    910     | PARSEOP_STARTDEPENDENTFN_NOPRI
    911         PARSEOP_OPEN_PAREN
    912         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    913     ;
    914 
    915 StartDependentFnTerm
    916     : PARSEOP_STARTDEPENDENTFN
    917         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
    918         ByteConstExpr
    919         ',' ByteConstExpr
    920         PARSEOP_CLOSE_PAREN '{'
    921         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
    922     | PARSEOP_STARTDEPENDENTFN
    923         PARSEOP_OPEN_PAREN
    924         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    925     ;
    926 
    927 UartSerialBusTerm
    928     : PARSEOP_UART_SERIALBUS
    929         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
    930         DWordConstExpr              /* 04: ConnectionSpeed */
    931         OptionalBitsPerByte         /* 05: BitsPerByte */
    932         OptionalStopBits            /* 06: StopBits */
    933         ',' ByteConstExpr           /* 08: LinesInUse */
    934         OptionalEndian              /* 09: Endianness */
    935         OptionalParityType          /* 10: Parity */
    936         OptionalFlowControl         /* 11: FlowControl */
    937         ',' WordConstExpr           /* 13: Rx BufferSize */
    938         ',' WordConstExpr           /* 15: Tx BufferSize */
    939         ',' StringData              /* 17: ResourceSource */
    940         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    941         OptionalResourceType        /* 19: ResourceType */
    942         OptionalNameString          /* 20: DescriptorName */
    943         OptionalBuffer_Last         /* 21: VendorData */
    944         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    945                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    946                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
    947     | PARSEOP_UART_SERIALBUS
    948         PARSEOP_OPEN_PAREN
    949         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    950     ;
    951 
    952 UartSerialBusTermV2
    953     : PARSEOP_UART_SERIALBUS_V2
    954         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
    955         DWordConstExpr              /* 04: ConnectionSpeed */
    956         OptionalBitsPerByte         /* 05: BitsPerByte */
    957         OptionalStopBits            /* 06: StopBits */
    958         ',' ByteConstExpr           /* 08: LinesInUse */
    959         OptionalEndian              /* 09: Endianness */
    960         OptionalParityType          /* 10: Parity */
    961         OptionalFlowControl         /* 11: FlowControl */
    962         ',' WordConstExpr           /* 13: Rx BufferSize */
    963         ',' WordConstExpr           /* 15: Tx BufferSize */
    964         ',' StringData              /* 17: ResourceSource */
    965         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    966         OptionalResourceType        /* 19: ResourceType */
    967         OptionalNameString          /* 20: DescriptorName */
    968         OptionalShareType           /* 21: Share */
    969         OptionalBuffer_Last         /* 22: VendorData */
    970         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
    971                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    972     | PARSEOP_UART_SERIALBUS_V2
    973         PARSEOP_OPEN_PAREN
    974         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    975     ;
    976 
    977 VendorLongTerm
    978     : PARSEOP_VENDORLONG
    979         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
    980         OptionalNameString_First
    981         PARSEOP_CLOSE_PAREN '{'
    982             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    983     | PARSEOP_VENDORLONG
    984         PARSEOP_OPEN_PAREN
    985         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    986     ;
    987 
    988 VendorShortTerm
    989     : PARSEOP_VENDORSHORT
    990         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
    991         OptionalNameString_First
    992         PARSEOP_CLOSE_PAREN '{'
    993             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
    994     | PARSEOP_VENDORSHORT
    995         PARSEOP_OPEN_PAREN
    996         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    997     ;
    998 
    999 WordBusNumberTerm
   1000     : PARSEOP_WORDBUSNUMBER
   1001         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
   1002         OptionalResourceType_First
   1003         OptionalMinType
   1004         OptionalMaxType
   1005         OptionalDecodeType
   1006         ',' WordConstExpr
   1007         ',' WordConstExpr
   1008         ',' WordConstExpr
   1009         ',' WordConstExpr
   1010         ',' WordConstExpr
   1011         OptionalByteConstExpr
   1012         OptionalStringData
   1013         OptionalNameString_Last
   1014         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
   1015                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
   1016     | PARSEOP_WORDBUSNUMBER
   1017         PARSEOP_OPEN_PAREN
   1018         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1019     ;
   1020 
   1021 WordIOTerm
   1022     : PARSEOP_WORDIO
   1023         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
   1024         OptionalResourceType_First
   1025         OptionalMinType
   1026         OptionalMaxType
   1027         OptionalDecodeType
   1028         OptionalRangeType
   1029         ',' WordConstExpr
   1030         ',' WordConstExpr
   1031         ',' WordConstExpr
   1032         ',' WordConstExpr
   1033         ',' WordConstExpr
   1034         OptionalByteConstExpr
   1035         OptionalStringData
   1036         OptionalNameString
   1037         OptionalType
   1038         OptionalTranslationType_Last
   1039         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
   1040                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
   1041     | PARSEOP_WORDIO
   1042         PARSEOP_OPEN_PAREN
   1043         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1044     ;
   1045 
   1046 WordPccTerm
   1047     : PARSEOP_WORDPCC
   1048         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
   1049         ByteConstExpr
   1050         OptionalByteConstExpr
   1051         OptionalStringData
   1052         OptionalNameString_Last
   1053         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
   1054                                                         $4,$5,$6,$7);}
   1055     | PARSEOP_WORDPCC
   1056         PARSEOP_OPEN_PAREN
   1057         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
   1058     ;
   1059 
   1060 WordSpaceTerm
   1061     : PARSEOP_WORDSPACE
   1062         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
   1063         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
   1064         OptionalResourceType
   1065         OptionalDecodeType
   1066         OptionalMinType
   1067         OptionalMaxType
   1068         ',' ByteConstExpr
   1069         ',' WordConstExpr
   1070         ',' WordConstExpr
   1071         ',' WordConstExpr
   1072         ',' WordConstExpr
   1073         ',' WordConstExpr
   1074         OptionalByteConstExpr
   1075         OptionalStringData
   1076         OptionalNameString_Last
   1077         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
   1078                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
   1079     | PARSEOP_WORDSPACE
   1080         PARSEOP_OPEN_PAREN
   1081         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1082     ;
   1083