Home | History | Annotate | Line # | Download | only in compiler
aslresources.y revision 1.1.1.2
      1 NoEcho('
      2 /******************************************************************************
      3  *
      4  * Module Name: aslresources.y - Bison/Yacc production rules for resources
      5  *
      6  *****************************************************************************/
      7 
      8 /*
      9  * Copyright (C) 2000 - 2016, Intel Corp.
     10  * All rights reserved.
     11  *
     12  * Redistribution and use in source and binary forms, with or without
     13  * modification, are permitted provided that the following conditions
     14  * are met:
     15  * 1. Redistributions of source code must retain the above copyright
     16  *    notice, this list of conditions, and the following disclaimer,
     17  *    without modification.
     18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  *    including a substantially similar Disclaimer requirement for further
     22  *    binary redistribution.
     23  * 3. Neither the names of the above-listed copyright holders nor the names
     24  *    of any contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * Alternatively, this software may be distributed under the terms of the
     28  * GNU General Public License ("GPL") version 2 as published by the Free
     29  * Software Foundation.
     30  *
     31  * NO WARRANTY
     32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  * POSSIBILITY OF SUCH DAMAGES.
     43  */
     44 
     45 ')
     46 
     47 /*******************************************************************************
     48  *
     49  * ASL Parameter Keyword Terms
     50  *
     51  ******************************************************************************/
     52 
     53 AccessAttribKeyword
     54     : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
     55     | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
     56     | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
     57     | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
     58     | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
     59     | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
     60     | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
     61     | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
     62         ByteConst
     63         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     64     | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
     65         ByteConst
     66         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     67     | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
     68         ByteConst
     69         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     70     ;
     71 
     72 AccessTypeKeyword
     73     : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
     74     | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
     75     | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
     76     | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
     77     | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
     78     | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
     79     ;
     80 
     81 AddressingModeKeyword
     82     : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
     83     | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
     84     ;
     85 
     86 AddressKeyword
     87     : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
     88     | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
     89     | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
     90     | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
     91     ;
     92 
     93 AddressSpaceKeyword
     94     : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
     95     | RegionSpaceKeyword                    {}
     96     ;
     97 
     98 BitsPerByteKeyword
     99     : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
    100     | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
    101     | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
    102     | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
    103     | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
    104     ;
    105 
    106 ClockPhaseKeyword
    107     : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
    108     | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
    109     ;
    110 
    111 ClockPolarityKeyword
    112     : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
    113     | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
    114     ;
    115 
    116 DecodeKeyword
    117     : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
    118     | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
    119     ;
    120 
    121 DevicePolarityKeyword
    122     : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
    123     | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
    124     ;
    125 
    126 DMATypeKeyword
    127     : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
    128     | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
    129     | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
    130     | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
    131     ;
    132 
    133 EndianKeyword
    134     : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
    135     | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
    136     ;
    137 
    138 FlowControlKeyword
    139     : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
    140     | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
    141     | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
    142     ;
    143 
    144 InterruptLevel
    145     : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
    146     | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
    147     | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
    148     ;
    149 
    150 InterruptTypeKeyword
    151     : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
    152     | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
    153     ;
    154 
    155 IODecodeKeyword
    156     : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
    157     | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
    158     ;
    159 
    160 IoRestrictionKeyword
    161     : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
    162     | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
    163     | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
    164     | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
    165     ;
    166 
    167 LockRuleKeyword
    168     : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
    169     | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
    170     ;
    171 
    172 MatchOpKeyword
    173     : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
    174     | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
    175     | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
    176     | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
    177     | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
    178     | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
    179     ;
    180 
    181 MaxKeyword
    182     : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
    183     | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
    184     ;
    185 
    186 MemTypeKeyword
    187     : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
    188     | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
    189     | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
    190     | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
    191     ;
    192 
    193 MinKeyword
    194     : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
    195     | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
    196     ;
    197 
    198 ObjectTypeKeyword
    199     : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
    200     | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
    201     | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
    202     | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
    203     | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
    204     | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
    205     | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
    206     | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
    207     | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
    208     | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
    209     | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
    210     | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
    211     | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
    212     | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
    213     | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
    214     | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
    215     ;
    216 
    217 ParityTypeKeyword
    218     : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
    219     | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
    220     | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
    221     | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
    222     | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
    223     ;
    224 
    225 PinConfigByte
    226     : PinConfigKeyword                      {$$ = $1;}
    227     | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
    228     ;
    229 
    230 PinConfigKeyword
    231     : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
    232     | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
    233     | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
    234     | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
    235     ;
    236 
    237 PldKeyword
    238     : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
    239     | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
    240     | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
    241     | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
    242     | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
    243     | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
    244     | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
    245     | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
    246     | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
    247     | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
    248     | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
    249     | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
    250     | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
    251     | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
    252     | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
    253     | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
    254     | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
    255     | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
    256     | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
    257     | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
    258     | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
    259     | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
    260     | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
    261     | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
    262     | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
    263     | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
    264     | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
    265     | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
    266     ;
    267 
    268 RangeTypeKeyword
    269     : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
    270     | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
    271     | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
    272     ;
    273 
    274 RegionSpaceKeyword
    275     : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
    276     | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
    277     | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
    278     | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
    279     | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
    280     | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
    281     | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
    282     | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
    283     | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
    284     | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
    285     | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
    286     | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
    287     ;
    288 
    289 ResourceTypeKeyword
    290     : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
    291     | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
    292     ;
    293 
    294 SerializeRuleKeyword
    295     : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
    296     | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
    297     ;
    298 
    299 ShareTypeKeyword
    300     : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
    301     | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
    302     | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
    303     | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
    304    ;
    305 
    306 SlaveModeKeyword
    307     : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
    308     | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
    309     ;
    310 
    311 StopBitsKeyword
    312     : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
    313     | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
    314     | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
    315     | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
    316     ;
    317 
    318 TranslationKeyword
    319     : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
    320     | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
    321     ;
    322 
    323 TypeKeyword
    324     : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
    325     | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
    326     ;
    327 
    328 UpdateRuleKeyword
    329     : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
    330     | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
    331     | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
    332     ;
    333 
    334 WireModeKeyword
    335     : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
    336     | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
    337     ;
    338 
    339 XferSizeKeyword
    340     : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
    341     | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
    342     | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
    343     | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
    344     | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
    345     | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
    346     ;
    347 
    348 XferTypeKeyword
    349     : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
    350     | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
    351     | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
    352     ;
    353 
    354 
    355 /*******************************************************************************
    356  *
    357  * ASL Resource Template Terms
    358  *
    359  ******************************************************************************/
    360 
    361 /*
    362  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
    363  * Also, insert the EndTag at the end of the template.
    364  */
    365 ResourceTemplateTerm
    366     : PARSEOP_RESOURCETEMPLATE '(' ')'
    367         '{'
    368         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
    369                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    370                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    371                                           $5,
    372                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
    373     ;
    374 
    375 ResourceMacroList
    376     :                               {$$ = NULL;}
    377     | ResourceMacroList
    378         ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
    379     ;
    380 
    381 ResourceMacroTerm
    382     : DMATerm                       {}
    383     | DWordIOTerm                   {}
    384     | DWordMemoryTerm               {}
    385     | DWordSpaceTerm                {}
    386     | EndDependentFnTerm            {}
    387     | ExtendedIOTerm                {}
    388     | ExtendedMemoryTerm            {}
    389     | ExtendedSpaceTerm             {}
    390     | FixedDmaTerm                  {}
    391     | FixedIOTerm                   {}
    392     | GpioIntTerm                   {}
    393     | GpioIoTerm                    {}
    394     | I2cSerialBusTerm              {}
    395     | I2cSerialBusTermV2            {}
    396     | InterruptTerm                 {}
    397     | IOTerm                        {}
    398     | IRQNoFlagsTerm                {}
    399     | IRQTerm                       {}
    400     | Memory24Term                  {}
    401     | Memory32FixedTerm             {}
    402     | Memory32Term                  {}
    403     | QWordIOTerm                   {}
    404     | QWordMemoryTerm               {}
    405     | QWordSpaceTerm                {}
    406     | RegisterTerm                  {}
    407     | SpiSerialBusTerm              {}
    408     | SpiSerialBusTermV2            {}
    409     | StartDependentFnNoPriTerm     {}
    410     | StartDependentFnTerm          {}
    411     | UartSerialBusTerm             {}
    412     | UartSerialBusTermV2           {}
    413     | VendorLongTerm                {}
    414     | VendorShortTerm               {}
    415     | WordBusNumberTerm             {}
    416     | WordIOTerm                    {}
    417     | WordSpaceTerm                 {}
    418     ;
    419 
    420 DMATerm
    421     : PARSEOP_DMA '('               {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
    422         DMATypeKeyword
    423         OptionalBusMasterKeyword
    424         ',' XferTypeKeyword
    425         OptionalNameString_Last
    426         ')' '{'
    427             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    428     | PARSEOP_DMA '('
    429         error ')'                   {$$ = AslDoError(); yyclearin;}
    430     ;
    431 
    432 DWordIOTerm
    433     : PARSEOP_DWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
    434         OptionalResourceType_First
    435         OptionalMinType
    436         OptionalMaxType
    437         OptionalDecodeType
    438         OptionalRangeType
    439         ',' DWordConstExpr
    440         ',' DWordConstExpr
    441         ',' DWordConstExpr
    442         ',' DWordConstExpr
    443         ',' DWordConstExpr
    444         OptionalByteConstExpr
    445         OptionalStringData
    446         OptionalNameString
    447         OptionalType
    448         OptionalTranslationType_Last
    449         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    450     | PARSEOP_DWORDIO '('
    451         error ')'                   {$$ = AslDoError(); yyclearin;}
    452     ;
    453 
    454 DWordMemoryTerm
    455     : PARSEOP_DWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
    456         OptionalResourceType_First
    457         OptionalDecodeType
    458         OptionalMinType
    459         OptionalMaxType
    460         OptionalMemType
    461         ',' OptionalReadWriteKeyword
    462         ',' DWordConstExpr
    463         ',' DWordConstExpr
    464         ',' DWordConstExpr
    465         ',' DWordConstExpr
    466         ',' DWordConstExpr
    467         OptionalByteConstExpr
    468         OptionalStringData
    469         OptionalNameString
    470         OptionalAddressRange
    471         OptionalType_Last
    472         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    473     | PARSEOP_DWORDMEMORY '('
    474         error ')'                   {$$ = AslDoError(); yyclearin;}
    475     ;
    476 
    477 DWordSpaceTerm
    478     : PARSEOP_DWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
    479         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    480         OptionalResourceType
    481         OptionalDecodeType
    482         OptionalMinType
    483         OptionalMaxType
    484         ',' ByteConstExpr
    485         ',' DWordConstExpr
    486         ',' DWordConstExpr
    487         ',' DWordConstExpr
    488         ',' DWordConstExpr
    489         ',' DWordConstExpr
    490         OptionalByteConstExpr
    491         OptionalStringData
    492         OptionalNameString_Last
    493         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    494     | PARSEOP_DWORDSPACE '('
    495         error ')'                   {$$ = AslDoError(); yyclearin;}
    496     ;
    497 
    498 EndDependentFnTerm
    499     : PARSEOP_ENDDEPENDENTFN '('
    500         ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
    501     | PARSEOP_ENDDEPENDENTFN '('
    502         error ')'                   {$$ = AslDoError(); yyclearin;}
    503     ;
    504 
    505 ExtendedIOTerm
    506     : PARSEOP_EXTENDEDIO '('        {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
    507         OptionalResourceType_First
    508         OptionalMinType
    509         OptionalMaxType
    510         OptionalDecodeType
    511         OptionalRangeType
    512         ',' QWordConstExpr
    513         ',' QWordConstExpr
    514         ',' QWordConstExpr
    515         ',' QWordConstExpr
    516         ',' QWordConstExpr
    517         OptionalQWordConstExpr
    518         OptionalNameString
    519         OptionalType
    520         OptionalTranslationType_Last
    521         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    522     | PARSEOP_EXTENDEDIO '('
    523         error ')'                   {$$ = AslDoError(); yyclearin;}
    524     ;
    525 
    526 ExtendedMemoryTerm
    527     : PARSEOP_EXTENDEDMEMORY '('    {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
    528         OptionalResourceType_First
    529         OptionalDecodeType
    530         OptionalMinType
    531         OptionalMaxType
    532         OptionalMemType
    533         ',' OptionalReadWriteKeyword
    534         ',' QWordConstExpr
    535         ',' QWordConstExpr
    536         ',' QWordConstExpr
    537         ',' QWordConstExpr
    538         ',' QWordConstExpr
    539         OptionalQWordConstExpr
    540         OptionalNameString
    541         OptionalAddressRange
    542         OptionalType_Last
    543         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    544     | PARSEOP_EXTENDEDMEMORY '('
    545         error ')'                   {$$ = AslDoError(); yyclearin;}
    546     ;
    547 
    548 ExtendedSpaceTerm
    549     : PARSEOP_EXTENDEDSPACE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
    550         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    551         OptionalResourceType
    552         OptionalDecodeType
    553         OptionalMinType
    554         OptionalMaxType
    555         ',' ByteConstExpr
    556         ',' QWordConstExpr
    557         ',' QWordConstExpr
    558         ',' QWordConstExpr
    559         ',' QWordConstExpr
    560         ',' QWordConstExpr
    561         OptionalQWordConstExpr
    562         OptionalNameString_Last
    563         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    564     | PARSEOP_EXTENDEDSPACE '('
    565         error ')'                   {$$ = AslDoError(); yyclearin;}
    566     ;
    567 
    568 FixedDmaTerm
    569     : PARSEOP_FIXEDDMA '('          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
    570         WordConstExpr               /* 04: DMA RequestLines */
    571         ',' WordConstExpr           /* 06: DMA Channels */
    572         OptionalXferSize            /* 07: DMA TransferSize */
    573         OptionalNameString          /* 08: DescriptorName */
    574         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
    575     | PARSEOP_FIXEDDMA '('
    576         error ')'                   {$$ = AslDoError(); yyclearin;}
    577     ;
    578 
    579 FixedIOTerm
    580     : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
    581         WordConstExpr
    582         ',' ByteConstExpr
    583         OptionalNameString_Last
    584         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    585     | PARSEOP_FIXEDIO '('
    586         error ')'                   {$$ = AslDoError(); yyclearin;}
    587     ;
    588 
    589 GpioIntTerm
    590     : PARSEOP_GPIO_INT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
    591         InterruptTypeKeyword        /* 04: InterruptType */
    592         ',' InterruptLevel          /* 06: InterruptLevel */
    593         OptionalShareType           /* 07: SharedType */
    594         ',' PinConfigByte           /* 09: PinConfig */
    595         OptionalWordConstExpr       /* 10: DebounceTimeout */
    596         ',' StringData              /* 12: ResourceSource */
    597         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    598         OptionalResourceType        /* 14: ResourceType */
    599         OptionalNameString          /* 15: DescriptorName */
    600         OptionalBuffer_Last         /* 16: VendorData */
    601         ')' '{'
    602             DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    603     | PARSEOP_GPIO_INT '('
    604         error ')'                   {$$ = AslDoError(); yyclearin;}
    605     ;
    606 
    607 GpioIoTerm
    608     : PARSEOP_GPIO_IO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
    609         OptionalShareType_First     /* 04: SharedType */
    610         ',' PinConfigByte           /* 06: PinConfig */
    611         OptionalWordConstExpr       /* 07: DebounceTimeout */
    612         OptionalWordConstExpr       /* 08: DriveStrength */
    613         OptionalIoRestriction       /* 09: IoRestriction */
    614         ',' StringData              /* 11: ResourceSource */
    615         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    616         OptionalResourceType        /* 13: ResourceType */
    617         OptionalNameString          /* 14: DescriptorName */
    618         OptionalBuffer_Last         /* 15: VendorData */
    619         ')' '{'
    620             DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    621     | PARSEOP_GPIO_IO '('
    622         error ')'                   {$$ = AslDoError(); yyclearin;}
    623     ;
    624 
    625 I2cSerialBusTerm
    626     : PARSEOP_I2C_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
    627         WordConstExpr               /* 04: SlaveAddress */
    628         OptionalSlaveMode           /* 05: SlaveMode */
    629         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    630         OptionalAddressingMode      /* 08: AddressingMode */
    631         ',' StringData              /* 10: ResourceSource */
    632         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    633         OptionalResourceType        /* 12: ResourceType */
    634         OptionalNameString          /* 13: DescriptorName */
    635         OptionalBuffer_Last         /* 14: VendorData */
    636         ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
    637                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
    638     | PARSEOP_I2C_SERIALBUS '('
    639         error ')'                   {$$ = AslDoError(); yyclearin;}
    640     ;
    641 
    642 I2cSerialBusTermV2
    643     : PARSEOP_I2C_SERIALBUS_V2 '('  {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS_V2);}
    644         WordConstExpr               /* 04: SlaveAddress */
    645         OptionalSlaveMode           /* 05: SlaveMode */
    646         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    647         OptionalAddressingMode      /* 08: AddressingMode */
    648         ',' StringData              /* 10: ResourceSource */
    649         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    650         OptionalResourceType        /* 12: ResourceType */
    651         OptionalNameString          /* 13: DescriptorName */
    652         OptionalShareType           /* 14: Share */
    653         OptionalBuffer_Last         /* 15: VendorData */
    654         ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
    655                                         $14,$15);}
    656     | PARSEOP_I2C_SERIALBUS_V2 '('
    657         error ')'                   {$$ = AslDoError(); yyclearin;}
    658     ;
    659 
    660 InterruptTerm
    661     : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
    662         OptionalResourceType_First
    663         ',' InterruptTypeKeyword
    664         ',' InterruptLevel
    665         OptionalShareType
    666         OptionalByteConstExpr
    667         OptionalStringData
    668         OptionalNameString_Last
    669         ')' '{'
    670             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
    671     | PARSEOP_INTERRUPT '('
    672         error ')'                   {$$ = AslDoError(); yyclearin;}
    673     ;
    674 
    675 IOTerm
    676     : PARSEOP_IO '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
    677         IODecodeKeyword
    678         ',' WordConstExpr
    679         ',' WordConstExpr
    680         ',' ByteConstExpr
    681         ',' ByteConstExpr
    682         OptionalNameString_Last
    683         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    684     | PARSEOP_IO '('
    685         error ')'                   {$$ = AslDoError(); yyclearin;}
    686     ;
    687 
    688 IRQNoFlagsTerm
    689     : PARSEOP_IRQNOFLAGS '('        {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
    690         OptionalNameString_First
    691         ')' '{'
    692             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    693     | PARSEOP_IRQNOFLAGS '('
    694         error ')'                   {$$ = AslDoError(); yyclearin;}
    695     ;
    696 
    697 IRQTerm
    698     : PARSEOP_IRQ '('               {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
    699         InterruptTypeKeyword
    700         ',' InterruptLevel
    701         OptionalShareType
    702         OptionalNameString_Last
    703         ')' '{'
    704             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    705     | PARSEOP_IRQ '('
    706         error ')'                   {$$ = AslDoError(); yyclearin;}
    707     ;
    708 
    709 Memory24Term
    710     : PARSEOP_MEMORY24 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
    711         OptionalReadWriteKeyword
    712         ',' WordConstExpr
    713         ',' WordConstExpr
    714         ',' WordConstExpr
    715         ',' WordConstExpr
    716         OptionalNameString_Last
    717         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    718     | PARSEOP_MEMORY24 '('
    719         error ')'                   {$$ = AslDoError(); yyclearin;}
    720     ;
    721 
    722 Memory32FixedTerm
    723     : PARSEOP_MEMORY32FIXED '('     {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
    724         OptionalReadWriteKeyword
    725         ',' DWordConstExpr
    726         ',' DWordConstExpr
    727         OptionalNameString_Last
    728         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
    729     | PARSEOP_MEMORY32FIXED '('
    730         error ')'                   {$$ = AslDoError(); yyclearin;}
    731     ;
    732 
    733 Memory32Term
    734     : PARSEOP_MEMORY32 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
    735         OptionalReadWriteKeyword
    736         ',' DWordConstExpr
    737         ',' DWordConstExpr
    738         ',' DWordConstExpr
    739         ',' DWordConstExpr
    740         OptionalNameString_Last
    741         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    742     | PARSEOP_MEMORY32 '('
    743         error ')'                   {$$ = AslDoError(); yyclearin;}
    744     ;
    745 
    746 QWordIOTerm
    747     : PARSEOP_QWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
    748         OptionalResourceType_First
    749         OptionalMinType
    750         OptionalMaxType
    751         OptionalDecodeType
    752         OptionalRangeType
    753         ',' QWordConstExpr
    754         ',' QWordConstExpr
    755         ',' QWordConstExpr
    756         ',' QWordConstExpr
    757         ',' QWordConstExpr
    758         OptionalByteConstExpr
    759         OptionalStringData
    760         OptionalNameString
    761         OptionalType
    762         OptionalTranslationType_Last
    763         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    764     | PARSEOP_QWORDIO '('
    765         error ')'                   {$$ = AslDoError(); yyclearin;}
    766     ;
    767 
    768 QWordMemoryTerm
    769     : PARSEOP_QWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
    770         OptionalResourceType_First
    771         OptionalDecodeType
    772         OptionalMinType
    773         OptionalMaxType
    774         OptionalMemType
    775         ',' OptionalReadWriteKeyword
    776         ',' QWordConstExpr
    777         ',' QWordConstExpr
    778         ',' QWordConstExpr
    779         ',' QWordConstExpr
    780         ',' QWordConstExpr
    781         OptionalByteConstExpr
    782         OptionalStringData
    783         OptionalNameString
    784         OptionalAddressRange
    785         OptionalType_Last
    786         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    787     | PARSEOP_QWORDMEMORY '('
    788         error ')'                   {$$ = AslDoError(); yyclearin;}
    789     ;
    790 
    791 QWordSpaceTerm
    792     : PARSEOP_QWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
    793         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    794         OptionalResourceType
    795         OptionalDecodeType
    796         OptionalMinType
    797         OptionalMaxType
    798         ',' ByteConstExpr
    799         ',' QWordConstExpr
    800         ',' QWordConstExpr
    801         ',' QWordConstExpr
    802         ',' QWordConstExpr
    803         ',' QWordConstExpr
    804         OptionalByteConstExpr
    805         OptionalStringData
    806         OptionalNameString_Last
    807         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    808     | PARSEOP_QWORDSPACE '('
    809         error ')'                   {$$ = AslDoError(); yyclearin;}
    810     ;
    811 
    812 RegisterTerm
    813     : PARSEOP_REGISTER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
    814         AddressSpaceKeyword
    815         ',' ByteConstExpr
    816         ',' ByteConstExpr
    817         ',' QWordConstExpr
    818         OptionalAccessSize
    819         OptionalNameString_Last
    820         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    821     | PARSEOP_REGISTER '('
    822         error ')'                   {$$ = AslDoError(); yyclearin;}
    823     ;
    824 
    825 SpiSerialBusTerm
    826     : PARSEOP_SPI_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
    827         WordConstExpr               /* 04: DeviceSelection */
    828         OptionalDevicePolarity      /* 05: DevicePolarity */
    829         OptionalWireMode            /* 06: WireMode */
    830         ',' ByteConstExpr           /* 08: DataBitLength */
    831         OptionalSlaveMode           /* 09: SlaveMode */
    832         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    833         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    834         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    835         ',' StringData              /* 17: ResourceSource */
    836         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    837         OptionalResourceType        /* 19: ResourceType */
    838         OptionalNameString          /* 20: DescriptorName */
    839         OptionalBuffer_Last         /* 21: VendorData */
    840         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    841                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    842     | PARSEOP_SPI_SERIALBUS '('
    843         error ')'                   {$$ = AslDoError(); yyclearin;}
    844     ;
    845 
    846 SpiSerialBusTermV2
    847     : PARSEOP_SPI_SERIALBUS_V2 '('  {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS_V2);}
    848         WordConstExpr               /* 04: DeviceSelection */
    849         OptionalDevicePolarity      /* 05: DevicePolarity */
    850         OptionalWireMode            /* 06: WireMode */
    851         ',' ByteConstExpr           /* 08: DataBitLength */
    852         OptionalSlaveMode           /* 09: SlaveMode */
    853         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    854         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    855         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    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         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    863                                         $21,$22);}
    864     | PARSEOP_SPI_SERIALBUS_V2 '('
    865         error ')'                   {$$ = AslDoError(); yyclearin;}
    866     ;
    867 
    868 StartDependentFnNoPriTerm
    869     : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    870         ')' '{'
    871         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
    872     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
    873         error ')'                   {$$ = AslDoError(); yyclearin;}
    874     ;
    875 
    876 StartDependentFnTerm
    877     : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
    878         ByteConstExpr
    879         ',' ByteConstExpr
    880         ')' '{'
    881         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
    882     | PARSEOP_STARTDEPENDENTFN '('
    883         error ')'                   {$$ = AslDoError(); yyclearin;}
    884     ;
    885 
    886 UartSerialBusTerm
    887     : PARSEOP_UART_SERIALBUS '('    {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
    888         DWordConstExpr              /* 04: ConnectionSpeed */
    889         OptionalBitsPerByte         /* 05: BitsPerByte */
    890         OptionalStopBits            /* 06: StopBits */
    891         ',' ByteConstExpr           /* 08: LinesInUse */
    892         OptionalEndian              /* 09: Endianess */
    893         OptionalParityType          /* 10: Parity */
    894         OptionalFlowControl         /* 11: FlowControl */
    895         ',' WordConstExpr           /* 13: Rx BufferSize */
    896         ',' WordConstExpr           /* 15: Tx BufferSize */
    897         ',' StringData              /* 17: ResourceSource */
    898         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    899         OptionalResourceType        /* 19: ResourceType */
    900         OptionalNameString          /* 20: DescriptorName */
    901         OptionalBuffer_Last         /* 21: VendorData */
    902         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    903                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    904     | PARSEOP_UART_SERIALBUS '('
    905         error ')'                   {$$ = AslDoError(); yyclearin;}
    906     ;
    907 
    908 UartSerialBusTermV2
    909     : PARSEOP_UART_SERIALBUS_V2 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS_V2);}
    910         DWordConstExpr              /* 04: ConnectionSpeed */
    911         OptionalBitsPerByte         /* 05: BitsPerByte */
    912         OptionalStopBits            /* 06: StopBits */
    913         ',' ByteConstExpr           /* 08: LinesInUse */
    914         OptionalEndian              /* 09: Endianess */
    915         OptionalParityType          /* 10: Parity */
    916         OptionalFlowControl         /* 11: FlowControl */
    917         ',' WordConstExpr           /* 13: Rx BufferSize */
    918         ',' WordConstExpr           /* 15: Tx BufferSize */
    919         ',' StringData              /* 17: ResourceSource */
    920         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    921         OptionalResourceType        /* 19: ResourceType */
    922         OptionalNameString          /* 20: DescriptorName */
    923         OptionalShareType           /* 21: Share */
    924         OptionalBuffer_Last         /* 22: VendorData */
    925         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    926                                         $21,$22);}
    927     | PARSEOP_UART_SERIALBUS_V2 '('
    928         error ')'                   {$$ = AslDoError(); yyclearin;}
    929     ;
    930 
    931 VendorLongTerm
    932     : PARSEOP_VENDORLONG '('        {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
    933         OptionalNameString_First
    934         ')' '{'
    935             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    936     | PARSEOP_VENDORLONG '('
    937         error ')'                   {$$ = AslDoError(); yyclearin;}
    938     ;
    939 
    940 VendorShortTerm
    941     : PARSEOP_VENDORSHORT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
    942         OptionalNameString_First
    943         ')' '{'
    944             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    945     | PARSEOP_VENDORSHORT '('
    946         error ')'                   {$$ = AslDoError(); yyclearin;}
    947     ;
    948 
    949 WordBusNumberTerm
    950     : PARSEOP_WORDBUSNUMBER '('     {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
    951         OptionalResourceType_First
    952         OptionalMinType
    953         OptionalMaxType
    954         OptionalDecodeType
    955         ',' WordConstExpr
    956         ',' WordConstExpr
    957         ',' WordConstExpr
    958         ',' WordConstExpr
    959         ',' WordConstExpr
    960         OptionalByteConstExpr
    961         OptionalStringData
    962         OptionalNameString_Last
    963         ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
    964     | PARSEOP_WORDBUSNUMBER '('
    965         error ')'                   {$$ = AslDoError(); yyclearin;}
    966     ;
    967 
    968 WordIOTerm
    969     : PARSEOP_WORDIO '('            {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
    970         OptionalResourceType_First
    971         OptionalMinType
    972         OptionalMaxType
    973         OptionalDecodeType
    974         OptionalRangeType
    975         ',' WordConstExpr
    976         ',' WordConstExpr
    977         ',' WordConstExpr
    978         ',' WordConstExpr
    979         ',' WordConstExpr
    980         OptionalByteConstExpr
    981         OptionalStringData
    982         OptionalNameString
    983         OptionalType
    984         OptionalTranslationType_Last
    985         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    986     | PARSEOP_WORDIO '('
    987         error ')'                   {$$ = AslDoError(); yyclearin;}
    988     ;
    989 
    990 WordSpaceTerm
    991     : PARSEOP_WORDSPACE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
    992         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    993         OptionalResourceType
    994         OptionalDecodeType
    995         OptionalMinType
    996         OptionalMaxType
    997         ',' ByteConstExpr
    998         ',' WordConstExpr
    999         ',' WordConstExpr
   1000         ',' WordConstExpr
   1001         ',' WordConstExpr
   1002         ',' WordConstExpr
   1003         OptionalByteConstExpr
   1004         OptionalStringData
   1005         OptionalNameString_Last
   1006         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
   1007     | PARSEOP_WORDSPACE '('
   1008         error ')'                   {$$ = AslDoError(); yyclearin;}
   1009     ;
   1010 
   1011 
   1012 /******* Object References ***********************************************/
   1013 
   1014 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
   1015 
   1016 NameString
   1017     : NameSeg                       {}
   1018     | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
   1019     | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
   1020     | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
   1021     | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
   1022     ;
   1023 
   1024 NameSeg
   1025     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
   1026     ;
   1027 
   1028 
   1029 /*******************************************************************************
   1030  *
   1031  * ASL Helper Terms
   1032  *
   1033  ******************************************************************************/
   1034 
   1035 OptionalBusMasterKeyword
   1036     : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
   1037     | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
   1038     | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
   1039     ;
   1040 
   1041 OptionalAccessAttribTerm
   1042     :                               {$$ = NULL;}
   1043     | ','                           {$$ = NULL;}
   1044     | ',' ByteConstExpr             {$$ = $2;}
   1045     | ',' AccessAttribKeyword       {$$ = $2;}
   1046     ;
   1047 
   1048 OptionalAccessSize
   1049     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
   1050     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
   1051     | ',' ByteConstExpr             {$$ = $2;}
   1052     ;
   1053 
   1054 OptionalAddressingMode
   1055     : ','                           {$$ = NULL;}
   1056     | ',' AddressingModeKeyword     {$$ = $2;}
   1057     ;
   1058 
   1059 OptionalAddressRange
   1060     :                               {$$ = NULL;}
   1061     | ','                           {$$ = NULL;}
   1062     | ',' AddressKeyword            {$$ = $2;}
   1063     ;
   1064 
   1065 OptionalBitsPerByte
   1066     : ','                           {$$ = NULL;}
   1067     | ',' BitsPerByteKeyword        {$$ = $2;}
   1068     ;
   1069 
   1070 OptionalBuffer_Last
   1071     :                               {$$ = NULL;}
   1072     | ','                           {$$ = NULL;}
   1073     | ',' RawDataBufferTerm         {$$ = $2;}
   1074     ;
   1075 
   1076 OptionalByteConstExpr
   1077     :                               {$$ = NULL;}
   1078     | ','                           {$$ = NULL;}
   1079     | ',' ByteConstExpr             {$$ = $2;}
   1080     ;
   1081 
   1082 OptionalDecodeType
   1083     : ','                           {$$ = NULL;}
   1084     | ',' DecodeKeyword             {$$ = $2;}
   1085     ;
   1086 
   1087 OptionalDevicePolarity
   1088     : ','                           {$$ = NULL;}
   1089     | ',' DevicePolarityKeyword     {$$ = $2;}
   1090     ;
   1091 
   1092 OptionalDWordConstExpr
   1093     :                               {$$ = NULL;}
   1094     | ','                           {$$ = NULL;}
   1095     | ',' DWordConstExpr            {$$ = $2;}
   1096     ;
   1097 
   1098 OptionalEndian
   1099     : ','                           {$$ = NULL;}
   1100     | ',' EndianKeyword             {$$ = $2;}
   1101     ;
   1102 
   1103 OptionalFlowControl
   1104     : ','                           {$$ = NULL;}
   1105     | ',' FlowControlKeyword        {$$ = $2;}
   1106     ;
   1107 
   1108 OptionalIoRestriction
   1109     : ','                           {$$ = NULL;}
   1110     | ',' IoRestrictionKeyword      {$$ = $2;}
   1111     ;
   1112 
   1113 OptionalListString
   1114     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   1115     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   1116     | ',' TermArg                   {$$ = $2;}
   1117     ;
   1118 
   1119 OptionalMaxType
   1120     : ','                           {$$ = NULL;}
   1121     | ',' MaxKeyword                {$$ = $2;}
   1122     ;
   1123 
   1124 OptionalMemType
   1125     : ','                           {$$ = NULL;}
   1126     | ',' MemTypeKeyword            {$$ = $2;}
   1127     ;
   1128 
   1129 OptionalMinType
   1130     : ','                           {$$ = NULL;}
   1131     | ',' MinKeyword                {$$ = $2;}
   1132     ;
   1133 
   1134 OptionalNameString
   1135     :                               {$$ = NULL;}
   1136     | ','                           {$$ = NULL;}
   1137     | ',' NameString                {$$ = $2;}
   1138     ;
   1139 
   1140 OptionalNameString_Last
   1141     :                               {$$ = NULL;}
   1142     | ','                           {$$ = NULL;}
   1143     | ',' NameString                {$$ = $2;}
   1144     ;
   1145 
   1146 OptionalNameString_First
   1147     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
   1148     | NameString                    {$$ = $1;}
   1149     ;
   1150 
   1151 OptionalObjectTypeKeyword
   1152     :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
   1153     | ',' ObjectTypeKeyword         {$$ = $2;}
   1154     ;
   1155 
   1156 OptionalParityType
   1157     : ','                           {$$ = NULL;}
   1158     | ',' ParityTypeKeyword         {$$ = $2;}
   1159     ;
   1160 
   1161 OptionalQWordConstExpr
   1162     :                               {$$ = NULL;}
   1163     | ','                           {$$ = NULL;}
   1164     | ',' QWordConstExpr            {$$ = $2;}
   1165     ;
   1166 
   1167 OptionalRangeType
   1168     : ','                           {$$ = NULL;}
   1169     | ',' RangeTypeKeyword          {$$ = $2;}
   1170     ;
   1171 
   1172 OptionalReadWriteKeyword
   1173     :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   1174     | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   1175     | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
   1176     ;
   1177 
   1178 OptionalResourceType_First
   1179     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1180     | ResourceTypeKeyword           {$$ = $1;}
   1181     ;
   1182 
   1183 OptionalResourceType
   1184     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1185     | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1186     | ',' ResourceTypeKeyword       {$$ = $2;}
   1187     ;
   1188 
   1189 OptionalSlaveMode
   1190     : ','                           {$$ = NULL;}
   1191     | ',' SlaveModeKeyword          {$$ = $2;}
   1192     ;
   1193 
   1194 OptionalShareType
   1195     :                               {$$ = NULL;}
   1196     | ','                           {$$ = NULL;}
   1197     | ',' ShareTypeKeyword          {$$ = $2;}
   1198     ;
   1199 
   1200 OptionalShareType_First
   1201     :                               {$$ = NULL;}
   1202     | ShareTypeKeyword              {$$ = $1;}
   1203     ;
   1204 
   1205 OptionalStopBits
   1206     : ','                           {$$ = NULL;}
   1207     | ',' StopBitsKeyword           {$$ = $2;}
   1208     ;
   1209 
   1210 OptionalStringData
   1211     :                               {$$ = NULL;}
   1212     | ','                           {$$ = NULL;}
   1213     | ',' StringData                {$$ = $2;}
   1214     ;
   1215 
   1216 OptionalTranslationType_Last
   1217     :                               {$$ = NULL;}
   1218     | ','                           {$$ = NULL;}
   1219     | ',' TranslationKeyword        {$$ = $2;}
   1220     ;
   1221 
   1222 OptionalType
   1223     :                               {$$ = NULL;}
   1224     | ','                           {$$ = NULL;}
   1225     | ',' TypeKeyword               {$$ = $2;}
   1226     ;
   1227 
   1228 OptionalType_Last
   1229     :                               {$$ = NULL;}
   1230     | ','                           {$$ = NULL;}
   1231     | ',' TypeKeyword               {$$ = $2;}
   1232     ;
   1233 
   1234 OptionalWireMode
   1235     : ','                           {$$ = NULL;}
   1236     | ',' WireModeKeyword           {$$ = $2;}
   1237     ;
   1238 
   1239 OptionalWordConstExpr
   1240     : ','                           {$$ = NULL;}
   1241     | ',' WordConstExpr             {$$ = $2;}
   1242     ;
   1243 
   1244 OptionalXferSize
   1245     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   1246     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   1247     | ',' XferSizeKeyword           {$$ = $2;}
   1248     ;
   1249