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