Home | History | Annotate | Line # | Download | only in compiler
aslprimaries.y revision 1.1.1.3
      1 NoEcho('
      2 /******************************************************************************
      3  *
      4  * Module Name: aslprimaries.y - Rules for primary ASL operators
      5  *                             - Keep this file synched with the
      6  *                               CvParseOpBlockType function in cvcompiler.c
      7  *
      8  *****************************************************************************/
      9 
     10 /*
     11  * Copyright (C) 2000 - 2017, 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 MERCHANTIBILITY 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 Primary Terms
     53  *
     54  ******************************************************************************/
     55 
     56 AccessAsTerm
     57     : PARSEOP_ACCESSAS
     58         PARSEOP_OPEN_PAREN
     59         AccessTypeKeyword
     60         OptionalAccessAttribTerm
     61         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
     62     | PARSEOP_ACCESSAS
     63         PARSEOP_OPEN_PAREN
     64         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     65     ;
     66 
     67 AcquireTerm
     68     : PARSEOP_ACQUIRE
     69         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
     70         SuperName
     71         ',' WordConstExpr
     72         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
     73     | PARSEOP_ACQUIRE
     74         PARSEOP_OPEN_PAREN
     75         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     76     ;
     77 
     78 AddTerm
     79     : PARSEOP_ADD
     80         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
     81         TermArg
     82         TermArgItem
     83         Target
     84         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     85     | PARSEOP_ADD
     86         PARSEOP_OPEN_PAREN
     87         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     88     ;
     89 
     90 AliasTerm
     91     : PARSEOP_ALIAS
     92         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
     93         NameString
     94         NameStringItem
     95         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,
     96                                         TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
     97     | PARSEOP_ALIAS
     98         PARSEOP_OPEN_PAREN
     99         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    100     ;
    101 
    102 AndTerm
    103     : PARSEOP_AND
    104         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
    105         TermArg
    106         TermArgItem
    107         Target
    108         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    109     | PARSEOP_AND
    110         PARSEOP_OPEN_PAREN
    111         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    112     ;
    113 
    114 ArgTerm
    115     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
    116     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
    117     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
    118     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
    119     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
    120     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
    121     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
    122     ;
    123 
    124 BankFieldTerm
    125     : PARSEOP_BANKFIELD
    126         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
    127         NameString
    128         NameStringItem
    129         TermArgItem
    130         ',' AccessTypeKeyword
    131         ',' LockRuleKeyword
    132         ',' UpdateRuleKeyword
    133         PARSEOP_CLOSE_PAREN '{'
    134             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,
    135                                         $4,$5,$6,$8,$10,$12,$15);}
    136     | PARSEOP_BANKFIELD
    137         PARSEOP_OPEN_PAREN
    138         error PARSEOP_CLOSE_PAREN
    139         '{' error '}'               {$$ = AslDoError(); yyclearin;}
    140     ;
    141 
    142 BreakTerm
    143     : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
    144     ;
    145 
    146 BreakPointTerm
    147     : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
    148     ;
    149 
    150 BufferTerm
    151     : PARSEOP_BUFFER                {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER); COMMENT_CAPTURE_OFF; }
    152         OptionalDataCount
    153         '{' BufferTermData '}'      {$$ = TrLinkChildren ($<n>2,2,$3,$5); COMMENT_CAPTURE_ON;}
    154     ;
    155 
    156 BufferTermData
    157     : ByteList                      {}
    158     | StringData                    {}
    159     ;
    160 
    161 CaseTerm
    162     : PARSEOP_CASE
    163         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
    164         DataObject
    165         PARSEOP_CLOSE_PAREN '{'
    166             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    167     | PARSEOP_CASE
    168         PARSEOP_OPEN_PAREN
    169         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    170     ;
    171 
    172 ConcatTerm
    173     : PARSEOP_CONCATENATE
    174         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
    175         TermArg
    176         TermArgItem
    177         Target
    178         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    179     | PARSEOP_CONCATENATE
    180         PARSEOP_OPEN_PAREN
    181         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    182     ;
    183 
    184 ConcatResTerm
    185     : PARSEOP_CONCATENATERESTEMPLATE
    186         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (
    187                                         PARSEOP_CONCATENATERESTEMPLATE);}
    188         TermArg
    189         TermArgItem
    190         Target
    191         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    192     | PARSEOP_CONCATENATERESTEMPLATE
    193         PARSEOP_OPEN_PAREN
    194         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    195     ;
    196 
    197 CondRefOfTerm
    198     : PARSEOP_CONDREFOF
    199         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
    200         CondRefOfSource
    201         Target
    202         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    203     | PARSEOP_CONDREFOF
    204         PARSEOP_OPEN_PAREN
    205         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    206     ;
    207 
    208 ConnectionTerm
    209     : PARSEOP_CONNECTION
    210         PARSEOP_OPEN_PAREN
    211         NameString
    212         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
    213     | PARSEOP_CONNECTION
    214         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
    215         ResourceMacroTerm
    216         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3, 1,
    217                                         TrLinkChildren (
    218                                             TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
    219                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    220                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    221                                             $4));}
    222     | PARSEOP_CONNECTION
    223         PARSEOP_OPEN_PAREN
    224         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    225     ;
    226 
    227 ContinueTerm
    228     : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
    229     ;
    230 
    231 CopyObjectTerm
    232     : PARSEOP_COPYOBJECT
    233         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
    234         TermArg
    235         ',' SimpleName
    236         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,
    237                                         TrSetNodeFlags ($6, NODE_IS_TARGET));}
    238     | PARSEOP_COPYOBJECT
    239         PARSEOP_OPEN_PAREN
    240         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    241     ;
    242 
    243 CreateBitFieldTerm
    244     : PARSEOP_CREATEBITFIELD
    245         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
    246         TermArg
    247         TermArgItem
    248         NameStringItem
    249         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
    250                                         TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    251     | PARSEOP_CREATEBITFIELD
    252         PARSEOP_OPEN_PAREN
    253         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    254     ;
    255 
    256 CreateByteFieldTerm
    257     : PARSEOP_CREATEBYTEFIELD
    258         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
    259         TermArg
    260         TermArgItem
    261         NameStringItem
    262         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
    263                                         TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    264     | PARSEOP_CREATEBYTEFIELD
    265         PARSEOP_OPEN_PAREN
    266         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    267     ;
    268 
    269 CreateDWordFieldTerm
    270     : PARSEOP_CREATEDWORDFIELD
    271         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
    272         TermArg
    273         TermArgItem
    274         NameStringItem
    275         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
    276                                         TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    277     | PARSEOP_CREATEDWORDFIELD
    278         PARSEOP_OPEN_PAREN
    279         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    280     ;
    281 
    282 CreateFieldTerm
    283     : PARSEOP_CREATEFIELD
    284         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
    285         TermArg
    286         TermArgItem
    287         TermArgItem
    288         NameStringItem
    289         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,
    290                                         TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
    291     | PARSEOP_CREATEFIELD
    292         PARSEOP_OPEN_PAREN
    293         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    294     ;
    295 
    296 CreateQWordFieldTerm
    297     : PARSEOP_CREATEQWORDFIELD
    298         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
    299         TermArg
    300         TermArgItem
    301         NameStringItem
    302         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
    303                                         TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    304     | PARSEOP_CREATEQWORDFIELD
    305         PARSEOP_OPEN_PAREN
    306         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    307     ;
    308 
    309 CreateWordFieldTerm
    310     : PARSEOP_CREATEWORDFIELD
    311         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
    312         TermArg
    313         TermArgItem
    314         NameStringItem
    315         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
    316                                         TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    317     | PARSEOP_CREATEWORDFIELD
    318         PARSEOP_OPEN_PAREN
    319         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    320     ;
    321 
    322 DataRegionTerm
    323     : PARSEOP_DATATABLEREGION
    324         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
    325         NameString
    326         TermArgItem
    327         TermArgItem
    328         TermArgItem
    329         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,
    330                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
    331     | PARSEOP_DATATABLEREGION
    332         PARSEOP_OPEN_PAREN
    333         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    334     ;
    335 
    336 DebugTerm
    337     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
    338     ;
    339 
    340 DecTerm
    341     : PARSEOP_DECREMENT
    342         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
    343         SuperName
    344         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
    345     | PARSEOP_DECREMENT
    346         PARSEOP_OPEN_PAREN
    347         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    348     ;
    349 
    350 DefaultTerm
    351     : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
    352         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    353     | PARSEOP_DEFAULT '{'
    354         error '}'                   {$$ = AslDoError(); yyclearin;}
    355     ;
    356 
    357 DerefOfTerm
    358     : PARSEOP_DEREFOF
    359         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
    360         DerefOfSource
    361         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
    362     | PARSEOP_DEREFOF
    363         PARSEOP_OPEN_PAREN
    364         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    365     ;
    366 
    367 DeviceTerm
    368     : PARSEOP_DEVICE
    369         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
    370         NameString
    371         PARSEOP_CLOSE_PAREN '{'
    372             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
    373                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
    374     | PARSEOP_DEVICE
    375         PARSEOP_OPEN_PAREN
    376         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    377     ;
    378 
    379 DivideTerm
    380     : PARSEOP_DIVIDE
    381         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
    382         TermArg
    383         TermArgItem
    384         Target
    385         Target
    386         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
    387     | PARSEOP_DIVIDE
    388         PARSEOP_OPEN_PAREN
    389         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    390     ;
    391 
    392 EISAIDTerm
    393     : PARSEOP_EISAID
    394         PARSEOP_OPEN_PAREN
    395         StringData
    396         PARSEOP_CLOSE_PAREN         {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
    397     | PARSEOP_EISAID
    398         PARSEOP_OPEN_PAREN
    399         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    400     ;
    401 
    402 ElseIfTerm
    403     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
    404     ;
    405 
    406 ElseTerm
    407     :                               {$$ = NULL;}
    408     | PARSEOP_ELSE '{'
    409         TermList           {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    410         '}'                {$$ = TrLinkChildren ($<n>4,1,$3);}
    411 
    412     | PARSEOP_ELSE '{'
    413         error '}'                   {$$ = AslDoError(); yyclearin;}
    414 
    415     | PARSEOP_ELSE
    416         error                       {$$ = AslDoError(); yyclearin;}
    417 
    418     | PARSEOP_ELSEIF
    419         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    420         TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    421         PARSEOP_CLOSE_PAREN '{'
    422             TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
    423         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
    424                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
    425 
    426     | PARSEOP_ELSEIF
    427         PARSEOP_OPEN_PAREN
    428         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    429 
    430     | PARSEOP_ELSEIF
    431         error                       {$$ = AslDoError(); yyclearin;}
    432     ;
    433 
    434 EventTerm
    435     : PARSEOP_EVENT
    436         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
    437         NameString
    438         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,
    439                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
    440     | PARSEOP_EVENT
    441         PARSEOP_OPEN_PAREN
    442         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    443     ;
    444 
    445 ExternalTerm
    446     : PARSEOP_EXTERNAL
    447         PARSEOP_OPEN_PAREN
    448         NameString
    449         OptionalObjectTypeKeyword
    450         OptionalParameterTypePackage
    451         OptionalParameterTypesPackage
    452         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
    453     | PARSEOP_EXTERNAL
    454         PARSEOP_OPEN_PAREN
    455         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    456     ;
    457 
    458 FatalTerm
    459     : PARSEOP_FATAL
    460         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
    461         ByteConstExpr
    462         ',' DWordConstExpr
    463         TermArgItem
    464         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    465     | PARSEOP_FATAL
    466         PARSEOP_OPEN_PAREN
    467         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    468     ;
    469 
    470 FieldTerm
    471     : PARSEOP_FIELD
    472         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
    473         NameString
    474         ',' AccessTypeKeyword
    475         ',' LockRuleKeyword
    476         ',' UpdateRuleKeyword
    477         PARSEOP_CLOSE_PAREN '{'
    478             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
    479     | PARSEOP_FIELD
    480         PARSEOP_OPEN_PAREN
    481         error PARSEOP_CLOSE_PAREN
    482         '{' error '}'               {$$ = AslDoError(); yyclearin;}
    483     ;
    484 
    485 FindSetLeftBitTerm
    486     : PARSEOP_FINDSETLEFTBIT
    487         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
    488         TermArg
    489         Target
    490         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    491     | PARSEOP_FINDSETLEFTBIT
    492         PARSEOP_OPEN_PAREN
    493         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    494     ;
    495 
    496 FindSetRightBitTerm
    497     : PARSEOP_FINDSETRIGHTBIT
    498         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
    499         TermArg
    500         Target
    501         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    502     | PARSEOP_FINDSETRIGHTBIT
    503         PARSEOP_OPEN_PAREN
    504         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    505     ;
    506 
    507     /* Convert a For() loop to a While() loop */
    508 ForTerm
    509     : PARSEOP_FOR
    510         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
    511         OptionalTermArg ','         {}
    512         OptionalPredicate ','
    513         OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
    514                                             TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
    515         PARSEOP_CLOSE_PAREN
    516         '{' TermList '}'            {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
    517                                     {$<n>$ = TrLinkPeerNode ($13,$9);
    518                                         $$ = $<n>10;}
    519     ;
    520 
    521 OptionalPredicate
    522     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
    523     | TermArg                       {$$ = $1;}
    524     ;
    525 
    526 FprintfTerm
    527     : PARSEOP_FPRINTF
    528         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
    529         TermArg ','
    530         StringData
    531         PrintfArgList
    532         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    533     | PARSEOP_FPRINTF
    534         PARSEOP_OPEN_PAREN
    535         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    536     ;
    537 
    538 FromBCDTerm
    539     : PARSEOP_FROMBCD
    540         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
    541         TermArg
    542         Target
    543         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    544     | PARSEOP_FROMBCD
    545         PARSEOP_OPEN_PAREN
    546         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    547     ;
    548 
    549 FunctionTerm
    550     : PARSEOP_FUNCTION
    551         PARSEOP_OPEN_PAREN          {COMMENT_CAPTURE_OFF; $<n>$ = TrCreateLeafNode (PARSEOP_METHOD); }
    552         NameString
    553         OptionalParameterTypePackage
    554         OptionalParameterTypesPackage
    555         PARSEOP_CLOSE_PAREN '{'     {COMMENT_CAPTURE_ON; }
    556             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
    557                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
    558                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
    559                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
    560                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$10);}
    561     | PARSEOP_FUNCTION
    562         PARSEOP_OPEN_PAREN
    563         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    564     ;
    565 
    566 IfTerm
    567     : PARSEOP_IF
    568         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    569         TermArg
    570         PARSEOP_CLOSE_PAREN '{'
    571             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    572 
    573     | PARSEOP_IF
    574         PARSEOP_OPEN_PAREN
    575         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    576     ;
    577 
    578 IncludeTerm
    579     : PARSEOP_INCLUDE
    580         PARSEOP_OPEN_PAREN
    581         String
    582         PARSEOP_CLOSE_PAREN         {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
    583                                         FlOpenIncludeFile ($3);}
    584     ;
    585 
    586 IncludeEndTerm
    587     : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);
    588                                         TrSetCurrentFilename ($$);}
    589     ;
    590 
    591 IncTerm
    592     : PARSEOP_INCREMENT
    593         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
    594         SuperName
    595         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
    596     | PARSEOP_INCREMENT
    597         PARSEOP_OPEN_PAREN
    598         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    599     ;
    600 
    601 IndexFieldTerm
    602     : PARSEOP_INDEXFIELD
    603         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
    604         NameString
    605         NameStringItem
    606         ',' AccessTypeKeyword
    607         ',' LockRuleKeyword
    608         ',' UpdateRuleKeyword
    609         PARSEOP_CLOSE_PAREN '{'
    610             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
    611     | PARSEOP_INDEXFIELD
    612         PARSEOP_OPEN_PAREN
    613         error PARSEOP_CLOSE_PAREN
    614         '{' error '}'               {$$ = AslDoError(); yyclearin;}
    615     ;
    616 
    617 IndexTerm
    618     : PARSEOP_INDEX
    619         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
    620         TermArg
    621         TermArgItem
    622         Target
    623         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    624     | PARSEOP_INDEX
    625         PARSEOP_OPEN_PAREN
    626         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    627     ;
    628 
    629 LAndTerm
    630     : PARSEOP_LAND
    631         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
    632         TermArg
    633         TermArgItem
    634         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    635     | PARSEOP_LAND
    636         PARSEOP_OPEN_PAREN
    637         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    638     ;
    639 
    640 LEqualTerm
    641     : PARSEOP_LEQUAL
    642         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
    643         TermArg
    644         TermArgItem
    645         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    646     | PARSEOP_LEQUAL
    647         PARSEOP_OPEN_PAREN
    648         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    649     ;
    650 
    651 LGreaterEqualTerm
    652     : PARSEOP_LGREATEREQUAL
    653         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
    654         TermArg
    655         TermArgItem
    656         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
    657                                         TrLinkChildren ($<n>3,2,$4,$5));}
    658     | PARSEOP_LGREATEREQUAL
    659         PARSEOP_OPEN_PAREN
    660         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    661     ;
    662 
    663 LGreaterTerm
    664     : PARSEOP_LGREATER
    665         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
    666         TermArg
    667         TermArgItem
    668         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    669     | PARSEOP_LGREATER
    670         PARSEOP_OPEN_PAREN
    671         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    672     ;
    673 
    674 LLessEqualTerm
    675     : PARSEOP_LLESSEQUAL
    676         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
    677         TermArg
    678         TermArgItem
    679         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
    680                                         TrLinkChildren ($<n>3,2,$4,$5));}
    681     | PARSEOP_LLESSEQUAL
    682         PARSEOP_OPEN_PAREN
    683         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    684     ;
    685 
    686 LLessTerm
    687     : PARSEOP_LLESS
    688         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
    689         TermArg
    690         TermArgItem
    691         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    692     | PARSEOP_LLESS
    693         PARSEOP_OPEN_PAREN
    694         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    695     ;
    696 
    697 LNotEqualTerm
    698     : PARSEOP_LNOTEQUAL
    699         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
    700         TermArg
    701         TermArgItem
    702         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
    703                                         TrLinkChildren ($<n>3,2,$4,$5));}
    704     | PARSEOP_LNOTEQUAL
    705         PARSEOP_OPEN_PAREN
    706         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    707     ;
    708 
    709 LNotTerm
    710     : PARSEOP_LNOT
    711         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
    712         TermArg
    713         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
    714     | PARSEOP_LNOT
    715         PARSEOP_OPEN_PAREN
    716         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    717     ;
    718 
    719 LoadTableTerm
    720     : PARSEOP_LOADTABLE
    721         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
    722         TermArg
    723         TermArgItem
    724         TermArgItem
    725         OptionalListString
    726         OptionalListString
    727         OptionalReference
    728         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
    729     | PARSEOP_LOADTABLE
    730         PARSEOP_OPEN_PAREN
    731         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    732     ;
    733 
    734 LoadTerm
    735     : PARSEOP_LOAD
    736         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
    737         NameString
    738         RequiredTarget
    739         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    740     | PARSEOP_LOAD
    741         PARSEOP_OPEN_PAREN
    742         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    743     ;
    744 
    745 LocalTerm
    746     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
    747     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
    748     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
    749     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
    750     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
    751     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
    752     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
    753     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
    754     ;
    755 
    756 LOrTerm
    757     : PARSEOP_LOR
    758         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
    759         TermArg
    760         TermArgItem
    761         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    762     | PARSEOP_LOR
    763         PARSEOP_OPEN_PAREN
    764         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    765     ;
    766 
    767 MatchTerm
    768     : PARSEOP_MATCH
    769         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
    770         TermArg
    771         ',' MatchOpKeyword
    772         TermArgItem
    773         ',' MatchOpKeyword
    774         TermArgItem
    775         TermArgItem
    776         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
    777     | PARSEOP_MATCH
    778         PARSEOP_OPEN_PAREN
    779         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    780     ;
    781 
    782 MethodTerm
    783     : PARSEOP_METHOD
    784         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD); COMMENT_CAPTURE_OFF;}
    785         NameString
    786         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
    787         OptionalSerializeRuleKeyword
    788         OptionalByteConstExpr
    789         OptionalParameterTypePackage
    790         OptionalParameterTypesPackage
    791         PARSEOP_CLOSE_PAREN '{'     {COMMENT_CAPTURE_ON;}
    792             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
    793                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
    794                                         $5,$7,$8,$9,$10,$14);}
    795     | PARSEOP_METHOD
    796         PARSEOP_OPEN_PAREN
    797         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    798     ;
    799 
    800 MidTerm
    801     : PARSEOP_MID
    802         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
    803         TermArg
    804         TermArgItem
    805         TermArgItem
    806         Target
    807         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
    808     | PARSEOP_MID
    809         PARSEOP_OPEN_PAREN
    810         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    811     ;
    812 
    813 ModTerm
    814     : PARSEOP_MOD
    815         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
    816         TermArg
    817         TermArgItem
    818         Target
    819         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    820     | PARSEOP_MOD
    821         PARSEOP_OPEN_PAREN
    822         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    823     ;
    824 
    825 MultiplyTerm
    826     : PARSEOP_MULTIPLY
    827         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
    828         TermArg
    829         TermArgItem
    830         Target
    831         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    832     | PARSEOP_MULTIPLY
    833         PARSEOP_OPEN_PAREN
    834         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    835     ;
    836 
    837 MutexTerm
    838     : PARSEOP_MUTEX
    839         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
    840         NameString
    841         ',' ByteConstExpr
    842         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,
    843                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
    844     | PARSEOP_MUTEX
    845         PARSEOP_OPEN_PAREN
    846         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    847     ;
    848 
    849 NameTerm
    850     : PARSEOP_NAME
    851         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
    852         NameString
    853         ',' DataObject
    854         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,
    855                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
    856     | PARSEOP_NAME
    857         PARSEOP_OPEN_PAREN
    858         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    859     ;
    860 
    861 NAndTerm
    862     : PARSEOP_NAND
    863         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
    864         TermArg
    865         TermArgItem
    866         Target
    867         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    868     | PARSEOP_NAND
    869         PARSEOP_OPEN_PAREN
    870         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    871     ;
    872 
    873 NoOpTerm
    874     : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
    875     ;
    876 
    877 NOrTerm
    878     : PARSEOP_NOR
    879         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
    880         TermArg
    881         TermArgItem
    882         Target
    883         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    884     | PARSEOP_NOR
    885         PARSEOP_OPEN_PAREN
    886         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    887     ;
    888 
    889 NotifyTerm
    890     : PARSEOP_NOTIFY
    891         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
    892         SuperName
    893         TermArgItem
    894         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    895     | PARSEOP_NOTIFY
    896         PARSEOP_OPEN_PAREN
    897         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    898     ;
    899 
    900 NotTerm
    901     : PARSEOP_NOT
    902         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
    903         TermArg
    904         Target
    905         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    906     | PARSEOP_NOT
    907         PARSEOP_OPEN_PAREN
    908         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    909     ;
    910 
    911 ObjectTypeTerm
    912     : PARSEOP_OBJECTTYPE
    913         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
    914         ObjectTypeSource
    915         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
    916     | PARSEOP_OBJECTTYPE
    917         PARSEOP_OPEN_PAREN
    918         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    919     ;
    920 
    921 OffsetTerm
    922     : PARSEOP_OFFSET
    923         PARSEOP_OPEN_PAREN
    924         AmlPackageLengthTerm
    925         PARSEOP_CLOSE_PAREN         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
    926     | PARSEOP_OFFSET
    927         PARSEOP_OPEN_PAREN
    928         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    929     ;
    930 
    931 OpRegionTerm
    932     : PARSEOP_OPERATIONREGION
    933         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
    934         NameString
    935         ',' OpRegionSpaceIdTerm
    936         TermArgItem
    937         TermArgItem
    938         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,
    939                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
    940                                         $6,$7,$8);}
    941     | PARSEOP_OPERATIONREGION
    942         PARSEOP_OPEN_PAREN
    943         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    944     ;
    945 
    946 OpRegionSpaceIdTerm
    947     : RegionSpaceKeyword            {}
    948     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
    949     ;
    950 
    951 OrTerm
    952     : PARSEOP_OR
    953         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
    954         TermArg
    955         TermArgItem
    956         Target
    957         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    958     | PARSEOP_OR
    959         PARSEOP_OPEN_PAREN
    960         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    961     ;
    962 
    963 PackageTerm
    964     : PARSEOP_PACKAGE               {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
    965         OptionalDataCount
    966         '{' PackageList '}'         {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
    967 
    968 PowerResTerm
    969     : PARSEOP_POWERRESOURCE
    970         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
    971         NameString
    972         ',' ByteConstExpr
    973         ',' WordConstExpr
    974         PARSEOP_CLOSE_PAREN '{'
    975             TermList '}'            {$$ = TrLinkChildren ($<n>3,4,
    976                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
    977                                         $6,$8,$11);}
    978     | PARSEOP_POWERRESOURCE
    979         PARSEOP_OPEN_PAREN
    980         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    981     ;
    982 
    983 PrintfTerm
    984     : PARSEOP_PRINTF
    985         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
    986         StringData
    987         PrintfArgList
    988         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    989     | PARSEOP_PRINTF
    990         PARSEOP_OPEN_PAREN
    991         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    992     ;
    993 
    994 PrintfArgList
    995     :                               {$$ = NULL;}
    996     | TermArg                       {$$ = $1;}
    997     | PrintfArgList ','
    998        TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
    999     ;
   1000 
   1001 ProcessorTerm
   1002     : PARSEOP_PROCESSOR
   1003         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
   1004         NameString
   1005         ',' ByteConstExpr
   1006         OptionalDWordConstExpr
   1007         OptionalByteConstExpr
   1008         PARSEOP_CLOSE_PAREN '{'
   1009             TermList '}'            {$$ = TrLinkChildren ($<n>3,5,
   1010                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
   1011                                         $6,$7,$8,$11);}
   1012     | PARSEOP_PROCESSOR
   1013         PARSEOP_OPEN_PAREN
   1014         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1015     ;
   1016 
   1017 RawDataBufferTerm
   1018     : PARSEOP_DATABUFFER
   1019         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
   1020         OptionalWordConst
   1021         PARSEOP_CLOSE_PAREN '{'
   1022             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1023     | PARSEOP_DATABUFFER
   1024         PARSEOP_OPEN_PAREN
   1025         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1026     ;
   1027 
   1028 /*
   1029  * In RefOf, the node isn't really a target, but we can't keep track of it after
   1030  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
   1031  */
   1032 RefOfTerm
   1033     : PARSEOP_REFOF
   1034         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
   1035         RefOfSource
   1036         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,
   1037                                         TrSetNodeFlags ($4, NODE_IS_TARGET));}
   1038     | PARSEOP_REFOF
   1039         PARSEOP_OPEN_PAREN
   1040         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1041     ;
   1042 
   1043 ReleaseTerm
   1044     : PARSEOP_RELEASE
   1045         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
   1046         SuperName
   1047         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1048     | PARSEOP_RELEASE
   1049         PARSEOP_OPEN_PAREN
   1050         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1051     ;
   1052 
   1053 ResetTerm
   1054     : PARSEOP_RESET
   1055         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
   1056         SuperName
   1057         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1058     | PARSEOP_RESET
   1059         PARSEOP_OPEN_PAREN
   1060         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1061     ;
   1062 
   1063 ReturnTerm
   1064     : PARSEOP_RETURN
   1065         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
   1066         OptionalReturnArg
   1067         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1068     | PARSEOP_RETURN                {$$ = TrLinkChildren (
   1069                                         TrCreateLeafNode (PARSEOP_RETURN),1,
   1070                                         TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
   1071                                             NODE_IS_NULL_RETURN));}
   1072     | PARSEOP_RETURN
   1073         PARSEOP_OPEN_PAREN
   1074         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1075     ;
   1076 
   1077 ScopeTerm
   1078     : PARSEOP_SCOPE
   1079         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
   1080         NameString
   1081         PARSEOP_CLOSE_PAREN '{'
   1082             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
   1083                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1084     | PARSEOP_SCOPE
   1085         PARSEOP_OPEN_PAREN
   1086         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1087     ;
   1088 
   1089 ShiftLeftTerm
   1090     : PARSEOP_SHIFTLEFT
   1091         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
   1092         TermArg
   1093         TermArgItem
   1094         Target
   1095         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1096     | PARSEOP_SHIFTLEFT
   1097         PARSEOP_OPEN_PAREN
   1098         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1099     ;
   1100 
   1101 ShiftRightTerm
   1102     : PARSEOP_SHIFTRIGHT
   1103         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
   1104         TermArg
   1105         TermArgItem
   1106         Target
   1107         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1108     | PARSEOP_SHIFTRIGHT
   1109         PARSEOP_OPEN_PAREN
   1110         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1111     ;
   1112 
   1113 SignalTerm
   1114     : PARSEOP_SIGNAL
   1115         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
   1116         SuperName
   1117         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1118     | PARSEOP_SIGNAL
   1119         PARSEOP_OPEN_PAREN
   1120         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1121     ;
   1122 
   1123 SizeOfTerm
   1124     : PARSEOP_SIZEOF
   1125         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
   1126         SuperName
   1127         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1128     | PARSEOP_SIZEOF
   1129         PARSEOP_OPEN_PAREN
   1130         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1131     ;
   1132 
   1133 SleepTerm
   1134     : PARSEOP_SLEEP
   1135         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
   1136         TermArg
   1137         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1138     | PARSEOP_SLEEP
   1139         PARSEOP_OPEN_PAREN
   1140         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1141     ;
   1142 
   1143 StallTerm
   1144     : PARSEOP_STALL
   1145         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
   1146         TermArg
   1147         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1148     | PARSEOP_STALL
   1149         PARSEOP_OPEN_PAREN
   1150         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1151     ;
   1152 
   1153 StoreTerm
   1154     : PARSEOP_STORE
   1155         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
   1156         TermArg
   1157         ',' SuperName
   1158         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,
   1159                                             TrSetNodeFlags ($6, NODE_IS_TARGET));}
   1160     | PARSEOP_STORE
   1161         PARSEOP_OPEN_PAREN
   1162         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1163     ;
   1164 
   1165 SubtractTerm
   1166     : PARSEOP_SUBTRACT
   1167         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
   1168         TermArg
   1169         TermArgItem
   1170         Target
   1171         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1172     | PARSEOP_SUBTRACT
   1173         PARSEOP_OPEN_PAREN
   1174         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1175     ;
   1176 
   1177 SwitchTerm
   1178     : PARSEOP_SWITCH
   1179         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
   1180         TermArg
   1181         PARSEOP_CLOSE_PAREN '{'
   1182             CaseDefaultTermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1183     | PARSEOP_SWITCH
   1184         PARSEOP_OPEN_PAREN
   1185         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1186     ;
   1187 
   1188 ThermalZoneTerm
   1189     : PARSEOP_THERMALZONE
   1190         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
   1191         NameString
   1192         PARSEOP_CLOSE_PAREN '{'
   1193             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
   1194                                         TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1195     | PARSEOP_THERMALZONE
   1196         PARSEOP_OPEN_PAREN
   1197         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1198     ;
   1199 
   1200 TimerTerm
   1201     : PARSEOP_TIMER
   1202         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
   1203         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,0);}
   1204     | PARSEOP_TIMER                 {$$ = TrLinkChildren (
   1205                                         TrCreateLeafNode (PARSEOP_TIMER),0);}
   1206     | PARSEOP_TIMER
   1207         PARSEOP_OPEN_PAREN
   1208         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1209     ;
   1210 
   1211 ToBCDTerm
   1212     : PARSEOP_TOBCD
   1213         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
   1214         TermArg
   1215         Target
   1216         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1217     | PARSEOP_TOBCD
   1218         PARSEOP_OPEN_PAREN
   1219         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1220     ;
   1221 
   1222 ToBufferTerm
   1223     : PARSEOP_TOBUFFER
   1224         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
   1225         TermArg
   1226         Target
   1227         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1228     | PARSEOP_TOBUFFER
   1229         PARSEOP_OPEN_PAREN
   1230         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1231     ;
   1232 
   1233 ToDecimalStringTerm
   1234     : PARSEOP_TODECIMALSTRING
   1235         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
   1236         TermArg
   1237         Target
   1238         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1239     | PARSEOP_TODECIMALSTRING
   1240         PARSEOP_OPEN_PAREN
   1241         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1242     ;
   1243 
   1244 ToHexStringTerm
   1245     : PARSEOP_TOHEXSTRING
   1246         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
   1247         TermArg
   1248         Target
   1249         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1250     | PARSEOP_TOHEXSTRING
   1251         PARSEOP_OPEN_PAREN
   1252         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1253     ;
   1254 
   1255 ToIntegerTerm
   1256     : PARSEOP_TOINTEGER
   1257         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
   1258         TermArg
   1259         Target
   1260         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1261     | PARSEOP_TOINTEGER
   1262         PARSEOP_OPEN_PAREN
   1263         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1264     ;
   1265 
   1266 ToPLDTerm
   1267     : PARSEOP_TOPLD
   1268         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
   1269         PldKeywordList
   1270         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1271     | PARSEOP_TOPLD
   1272         PARSEOP_OPEN_PAREN
   1273         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1274     ;
   1275 
   1276 PldKeywordList
   1277     :                               {$$ = NULL;}
   1278     | PldKeyword
   1279         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
   1280     | PldKeyword
   1281         PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
   1282     | PldKeywordList ','            /* Allows a trailing comma at list end */
   1283     | PldKeywordList ','
   1284         PldKeyword
   1285         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1286     | PldKeywordList ','
   1287         PldKeyword
   1288         PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1289     ;
   1290 
   1291 
   1292 ToStringTerm
   1293     : PARSEOP_TOSTRING
   1294         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
   1295         TermArg
   1296         OptionalCount
   1297         Target
   1298         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1299     | PARSEOP_TOSTRING
   1300         PARSEOP_OPEN_PAREN
   1301         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1302     ;
   1303 
   1304 ToUUIDTerm
   1305     : PARSEOP_TOUUID
   1306         PARSEOP_OPEN_PAREN
   1307         StringData
   1308         PARSEOP_CLOSE_PAREN         {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
   1309     | PARSEOP_TOUUID
   1310         PARSEOP_OPEN_PAREN
   1311         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1312     ;
   1313 
   1314 UnicodeTerm
   1315     : PARSEOP_UNICODE
   1316         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
   1317         StringData
   1318         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
   1319     | PARSEOP_UNICODE
   1320         PARSEOP_OPEN_PAREN
   1321         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1322     ;
   1323 
   1324 UnloadTerm
   1325     : PARSEOP_UNLOAD
   1326         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
   1327         SuperName
   1328         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1329     | PARSEOP_UNLOAD
   1330         PARSEOP_OPEN_PAREN
   1331         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1332     ;
   1333 
   1334 WaitTerm
   1335     : PARSEOP_WAIT
   1336         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
   1337         SuperName
   1338         TermArgItem
   1339         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1340     | PARSEOP_WAIT
   1341         PARSEOP_OPEN_PAREN
   1342         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1343     ;
   1344 
   1345 XOrTerm
   1346     : PARSEOP_XOR
   1347         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
   1348         TermArg
   1349         TermArgItem
   1350         Target
   1351         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1352     | PARSEOP_XOR
   1353         PARSEOP_OPEN_PAREN
   1354         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1355     ;
   1356 
   1357 WhileTerm
   1358     : PARSEOP_WHILE
   1359         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
   1360         TermArg
   1361         PARSEOP_CLOSE_PAREN
   1362             '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1363     | PARSEOP_WHILE
   1364         PARSEOP_OPEN_PAREN
   1365         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
   1366     ;
   1367