Home | History | Annotate | Line # | Download | only in compiler
aslrules.y revision 1.1.1.1.2.3
      1          1.1  christos NoEcho('
      2          1.1  christos /******************************************************************************
      3          1.1  christos  *
      4  1.1.1.1.2.2     skrll  * Module Name: aslrules.y - Main Bison/Yacc production rules
      5          1.1  christos  *
      6          1.1  christos  *****************************************************************************/
      7          1.1  christos 
      8          1.1  christos /*
      9  1.1.1.1.2.2     skrll  * Copyright (C) 2000 - 2016, Intel Corp.
     10          1.1  christos  * All rights reserved.
     11          1.1  christos  *
     12          1.1  christos  * Redistribution and use in source and binary forms, with or without
     13          1.1  christos  * modification, are permitted provided that the following conditions
     14          1.1  christos  * are met:
     15          1.1  christos  * 1. Redistributions of source code must retain the above copyright
     16          1.1  christos  *    notice, this list of conditions, and the following disclaimer,
     17          1.1  christos  *    without modification.
     18          1.1  christos  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19          1.1  christos  *    substantially similar to the "NO WARRANTY" disclaimer below
     20          1.1  christos  *    ("Disclaimer") and any redistribution must be conditioned upon
     21          1.1  christos  *    including a substantially similar Disclaimer requirement for further
     22          1.1  christos  *    binary redistribution.
     23          1.1  christos  * 3. Neither the names of the above-listed copyright holders nor the names
     24          1.1  christos  *    of any contributors may be used to endorse or promote products derived
     25          1.1  christos  *    from this software without specific prior written permission.
     26          1.1  christos  *
     27          1.1  christos  * Alternatively, this software may be distributed under the terms of the
     28          1.1  christos  * GNU General Public License ("GPL") version 2 as published by the Free
     29          1.1  christos  * Software Foundation.
     30          1.1  christos  *
     31          1.1  christos  * NO WARRANTY
     32          1.1  christos  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33          1.1  christos  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34          1.1  christos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35          1.1  christos  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36          1.1  christos  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37          1.1  christos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38          1.1  christos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39          1.1  christos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40          1.1  christos  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41          1.1  christos  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42          1.1  christos  * POSSIBILITY OF SUCH DAMAGES.
     43          1.1  christos  */
     44          1.1  christos 
     45          1.1  christos ')
     46          1.1  christos 
     47          1.1  christos /*******************************************************************************
     48          1.1  christos  *
     49  1.1.1.1.2.2     skrll  * ASL Root and Secondary Terms
     50          1.1  christos  *
     51          1.1  christos  ******************************************************************************/
     52          1.1  christos 
     53          1.1  christos /*
     54  1.1.1.1.2.2     skrll  * Root term. Allow multiple #line directives before the definition block
     55          1.1  christos  * to handle output from preprocessors
     56          1.1  christos  */
     57  1.1.1.1.2.2     skrll AslCode
     58  1.1.1.1.2.2     skrll     : DefinitionBlockList           {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
     59          1.1  christos     | error                         {YYABORT; $$ = NULL;}
     60          1.1  christos     ;
     61          1.1  christos 
     62          1.1  christos 
     63          1.1  christos /*
     64          1.1  christos  * Note concerning support for "module-level code".
     65          1.1  christos  *
     66          1.1  christos  * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
     67          1.1  christos  * methods (the so-called module-level code.) This support was explicitly
     68          1.1  christos  * removed in ACPI 2.0, but this type of code continues to be created by
     69          1.1  christos  * BIOS vendors. In order to support the disassembly and recompilation of
     70          1.1  christos  * such code (and the porting of ASL code to iASL), iASL supports this
     71          1.1  christos  * code in violation of the current ACPI specification.
     72          1.1  christos  *
     73          1.1  christos  * The grammar change to support module-level code is to revert the
     74          1.1  christos  * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
     75          1.1  christos  * original use of {TermList} instead (see below.) This allows the use
     76          1.1  christos  * of Type1 and Type2 opcodes at module level.
     77  1.1.1.1.2.3     skrll  *
     78  1.1.1.1.2.3     skrll  * 04/2016: The module-level code is now allowed in the following terms:
     79  1.1.1.1.2.3     skrll  * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
     80  1.1.1.1.2.3     skrll  * The ObjectList term is obsolete and has been removed.
     81          1.1  christos  */
     82          1.1  christos DefinitionBlockTerm
     83  1.1.1.1.2.2     skrll     : PARSEOP_DEFINITION_BLOCK '('  {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK);}
     84          1.1  christos         String ','
     85          1.1  christos         String ','
     86          1.1  christos         ByteConst ','
     87          1.1  christos         String ','
     88          1.1  christos         String ','
     89          1.1  christos         DWordConst
     90          1.1  christos         ')'                         {TrSetEndLineNumber ($<n>3);}
     91          1.1  christos             '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
     92          1.1  christos     ;
     93          1.1  christos 
     94  1.1.1.1.2.2     skrll DefinitionBlockList
     95  1.1.1.1.2.2     skrll     : DefinitionBlockTerm
     96  1.1.1.1.2.2     skrll     | DefinitionBlockTerm
     97  1.1.1.1.2.2     skrll         DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
     98  1.1.1.1.2.1     skrll     ;
     99  1.1.1.1.2.1     skrll 
    100  1.1.1.1.2.2     skrll SuperName
    101  1.1.1.1.2.2     skrll     : NameString                    {}
    102  1.1.1.1.2.2     skrll     | ArgTerm                       {}
    103  1.1.1.1.2.2     skrll     | LocalTerm                     {}
    104  1.1.1.1.2.2     skrll     | DebugTerm                     {}
    105  1.1.1.1.2.2     skrll     | Type6Opcode                   {}
    106  1.1.1.1.2.1     skrll 
    107  1.1.1.1.2.2     skrll Target
    108  1.1.1.1.2.2     skrll     :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    109  1.1.1.1.2.2     skrll     | ','                           {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    110  1.1.1.1.2.2     skrll     | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    111          1.1  christos     ;
    112          1.1  christos 
    113  1.1.1.1.2.2     skrll TermArg
    114  1.1.1.1.2.2     skrll     : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    115  1.1.1.1.2.2     skrll     | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    116  1.1.1.1.2.2     skrll     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    117  1.1.1.1.2.2     skrll     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    118  1.1.1.1.2.2     skrll     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    119          1.1  christos     ;
    120          1.1  christos 
    121  1.1.1.1.2.2     skrll /*
    122  1.1.1.1.2.2     skrll  NOTE: Removed from TermArg due to reduce/reduce conflicts:
    123  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    124  1.1.1.1.2.2     skrll     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    125  1.1.1.1.2.2     skrll     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    126  1.1.1.1.2.2     skrll     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    127          1.1  christos 
    128  1.1.1.1.2.2     skrll */
    129          1.1  christos 
    130  1.1.1.1.2.2     skrll MethodInvocationTerm
    131  1.1.1.1.2.2     skrll     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
    132  1.1.1.1.2.2     skrll         ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
    133          1.1  christos     ;
    134          1.1  christos 
    135  1.1.1.1.2.2     skrll /* OptionalCount must appear before ByteList or an incorrect reduction will result */
    136          1.1  christos 
    137  1.1.1.1.2.2     skrll OptionalCount
    138  1.1.1.1.2.2     skrll     :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    139  1.1.1.1.2.2     skrll     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    140  1.1.1.1.2.2     skrll     | ',' TermArg                   {$$ = $2;}
    141          1.1  christos     ;
    142          1.1  christos 
    143  1.1.1.1.2.2     skrll VarPackageLengthTerm
    144  1.1.1.1.2.2     skrll     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    145  1.1.1.1.2.2     skrll     | TermArg                       {$$ = $1;}
    146          1.1  christos     ;
    147          1.1  christos 
    148          1.1  christos 
    149  1.1.1.1.2.2     skrll /******* List Terms **************************************************/
    150          1.1  christos 
    151  1.1.1.1.2.2     skrll ArgList
    152  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    153  1.1.1.1.2.2     skrll     | TermArg
    154  1.1.1.1.2.2     skrll     | ArgList ','                   /* Allows a trailing comma at list end */
    155  1.1.1.1.2.2     skrll     | ArgList ','
    156  1.1.1.1.2.2     skrll         TermArg                     {$$ = TrLinkPeerNode ($1,$3);}
    157          1.1  christos     ;
    158          1.1  christos 
    159  1.1.1.1.2.2     skrll ByteList
    160  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    161  1.1.1.1.2.2     skrll     | ByteConstExpr
    162  1.1.1.1.2.2     skrll     | ByteList ','                  /* Allows a trailing comma at list end */
    163  1.1.1.1.2.2     skrll     | ByteList ','
    164  1.1.1.1.2.2     skrll         ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
    165          1.1  christos     ;
    166          1.1  christos 
    167  1.1.1.1.2.2     skrll DWordList
    168  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    169  1.1.1.1.2.2     skrll     | DWordConstExpr
    170  1.1.1.1.2.2     skrll     | DWordList ','                 /* Allows a trailing comma at list end */
    171  1.1.1.1.2.2     skrll     | DWordList ','
    172  1.1.1.1.2.2     skrll         DWordConstExpr              {$$ = TrLinkPeerNode ($1,$3);}
    173          1.1  christos     ;
    174          1.1  christos 
    175  1.1.1.1.2.2     skrll FieldUnitList
    176          1.1  christos     :                               {$$ = NULL;}
    177  1.1.1.1.2.2     skrll     | FieldUnit
    178  1.1.1.1.2.2     skrll     | FieldUnitList ','             /* Allows a trailing comma at list end */
    179  1.1.1.1.2.2     skrll     | FieldUnitList ','
    180  1.1.1.1.2.2     skrll         FieldUnit                   {$$ = TrLinkPeerNode ($1,$3);}
    181          1.1  christos     ;
    182          1.1  christos 
    183  1.1.1.1.2.2     skrll FieldUnit
    184  1.1.1.1.2.2     skrll     : FieldUnitEntry                {}
    185  1.1.1.1.2.2     skrll     | OffsetTerm                    {}
    186  1.1.1.1.2.2     skrll     | AccessAsTerm                  {}
    187  1.1.1.1.2.2     skrll     | ConnectionTerm                {}
    188  1.1.1.1.2.2     skrll     ;
    189          1.1  christos 
    190  1.1.1.1.2.2     skrll FieldUnitEntry
    191  1.1.1.1.2.2     skrll     : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
    192  1.1.1.1.2.2     skrll     | NameSeg ','
    193  1.1.1.1.2.2     skrll         AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
    194  1.1.1.1.2.2     skrll     ;
    195          1.1  christos 
    196  1.1.1.1.2.2     skrll Object
    197  1.1.1.1.2.2     skrll     : CompilerDirective             {}
    198  1.1.1.1.2.2     skrll     | NamedObject                   {}
    199  1.1.1.1.2.2     skrll     | NameSpaceModifier             {}
    200          1.1  christos     ;
    201          1.1  christos 
    202  1.1.1.1.2.2     skrll PackageList
    203  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    204  1.1.1.1.2.2     skrll     | PackageElement
    205  1.1.1.1.2.2     skrll     | PackageList ','               /* Allows a trailing comma at list end */
    206  1.1.1.1.2.2     skrll     | PackageList ','
    207  1.1.1.1.2.2     skrll         PackageElement              {$$ = TrLinkPeerNode ($1,$3);}
    208          1.1  christos     ;
    209          1.1  christos 
    210  1.1.1.1.2.2     skrll PackageElement
    211  1.1.1.1.2.2     skrll     : DataObject                    {}
    212  1.1.1.1.2.2     skrll     | NameString                    {}
    213          1.1  christos     ;
    214          1.1  christos 
    215  1.1.1.1.2.2     skrll     /* Rules for specifying the type of one method argument or return value */
    216          1.1  christos 
    217          1.1  christos ParameterTypePackage
    218          1.1  christos     :                               {$$ = NULL;}
    219          1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    220          1.1  christos     | ParameterTypePackage ','
    221          1.1  christos         ObjectTypeKeyword           {$$ = TrLinkPeerNodes (2,$1,$3);}
    222          1.1  christos     ;
    223          1.1  christos 
    224          1.1  christos ParameterTypePackageList
    225          1.1  christos     :                               {$$ = NULL;}
    226          1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    227          1.1  christos     | '{' ParameterTypePackage '}'  {$$ = $2;}
    228          1.1  christos     ;
    229          1.1  christos 
    230          1.1  christos OptionalParameterTypePackage
    231          1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    232          1.1  christos     | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
    233          1.1  christos     ;
    234          1.1  christos 
    235  1.1.1.1.2.2     skrll     /* Rules for specifying the types for method arguments */
    236          1.1  christos 
    237          1.1  christos ParameterTypesPackage
    238          1.1  christos     : ParameterTypePackageList      {$$ = $1;}
    239          1.1  christos     | ParameterTypesPackage ','
    240          1.1  christos         ParameterTypePackageList    {$$ = TrLinkPeerNodes (2,$1,$3);}
    241          1.1  christos     ;
    242          1.1  christos 
    243          1.1  christos ParameterTypesPackageList
    244          1.1  christos     :                               {$$ = NULL;}
    245          1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    246          1.1  christos     | '{' ParameterTypesPackage '}' {$$ = $2;}
    247          1.1  christos     ;
    248          1.1  christos 
    249          1.1  christos OptionalParameterTypesPackage
    250          1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    251          1.1  christos     | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
    252          1.1  christos     ;
    253          1.1  christos 
    254  1.1.1.1.2.2     skrll     /* ACPI 3.0 -- allow semicolons between terms */
    255          1.1  christos 
    256  1.1.1.1.2.2     skrll TermList
    257  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    258  1.1.1.1.2.2     skrll     | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    259  1.1.1.1.2.2     skrll     | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    260  1.1.1.1.2.2     skrll     | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    261  1.1.1.1.2.2     skrll     | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    262          1.1  christos     ;
    263          1.1  christos 
    264  1.1.1.1.2.2     skrll Term
    265  1.1.1.1.2.2     skrll     : Object                        {}
    266  1.1.1.1.2.2     skrll     | Type1Opcode                   {}
    267  1.1.1.1.2.2     skrll     | Type2Opcode                   {}
    268  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    269  1.1.1.1.2.2     skrll     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    270  1.1.1.1.2.2     skrll     | Type2BufferOpcode             {}
    271  1.1.1.1.2.2     skrll     | Type2BufferOrStringOpcode     {}
    272  1.1.1.1.2.2     skrll     | error                         {$$ = AslDoError(); yyclearin;}
    273          1.1  christos     ;
    274          1.1  christos 
    275          1.1  christos /*
    276  1.1.1.1.2.2     skrll  * Case-Default list; allow only one Default term and unlimited Case terms
    277          1.1  christos  */
    278  1.1.1.1.2.2     skrll CaseDefaultTermList
    279  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    280  1.1.1.1.2.2     skrll     | CaseTerm  {}
    281  1.1.1.1.2.2     skrll     | DefaultTerm   {}
    282  1.1.1.1.2.2     skrll     | CaseDefaultTermList
    283  1.1.1.1.2.2     skrll         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    284  1.1.1.1.2.2     skrll     | CaseDefaultTermList
    285  1.1.1.1.2.2     skrll         DefaultTerm                 {$$ = TrLinkPeerNode ($1,$2);}
    286          1.1  christos 
    287  1.1.1.1.2.2     skrll /* Original - attempts to force zero or one default term within the switch */
    288  1.1.1.1.2.2     skrll 
    289  1.1.1.1.2.2     skrll /*
    290  1.1.1.1.2.2     skrll CaseDefaultTermList
    291  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    292  1.1.1.1.2.2     skrll     | CaseTermList
    293  1.1.1.1.2.2     skrll         DefaultTerm
    294  1.1.1.1.2.2     skrll         CaseTermList                {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
    295  1.1.1.1.2.2     skrll     | CaseTermList
    296  1.1.1.1.2.2     skrll         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    297  1.1.1.1.2.2     skrll     ;
    298  1.1.1.1.2.2     skrll 
    299  1.1.1.1.2.2     skrll CaseTermList
    300  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    301  1.1.1.1.2.2     skrll     | CaseTerm                      {}
    302  1.1.1.1.2.2     skrll     | CaseTermList
    303  1.1.1.1.2.2     skrll         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    304  1.1.1.1.2.2     skrll     ;
    305  1.1.1.1.2.2     skrll */
    306  1.1.1.1.2.2     skrll 
    307  1.1.1.1.2.2     skrll 
    308  1.1.1.1.2.2     skrll /*******************************************************************************
    309  1.1.1.1.2.2     skrll  *
    310  1.1.1.1.2.2     skrll  * ASL Data and Constant Terms
    311  1.1.1.1.2.2     skrll  *
    312  1.1.1.1.2.2     skrll  ******************************************************************************/
    313  1.1.1.1.2.2     skrll 
    314  1.1.1.1.2.2     skrll DataObject
    315  1.1.1.1.2.2     skrll     : BufferData                    {}
    316  1.1.1.1.2.2     skrll     | PackageData                   {}
    317  1.1.1.1.2.2     skrll     | IntegerData                   {}
    318  1.1.1.1.2.2     skrll     | StringData                    {}
    319  1.1.1.1.2.2     skrll     ;
    320  1.1.1.1.2.2     skrll 
    321  1.1.1.1.2.2     skrll BufferData
    322  1.1.1.1.2.2     skrll     : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    323  1.1.1.1.2.2     skrll     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    324  1.1.1.1.2.2     skrll     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    325  1.1.1.1.2.2     skrll     | BufferTerm                    {}
    326  1.1.1.1.2.2     skrll     ;
    327  1.1.1.1.2.2     skrll 
    328  1.1.1.1.2.2     skrll PackageData
    329  1.1.1.1.2.2     skrll     : PackageTerm                   {}
    330  1.1.1.1.2.2     skrll     ;
    331  1.1.1.1.2.2     skrll 
    332  1.1.1.1.2.2     skrll IntegerData
    333  1.1.1.1.2.2     skrll     : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    334  1.1.1.1.2.2     skrll     | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    335  1.1.1.1.2.2     skrll     | Integer                       {}
    336  1.1.1.1.2.2     skrll     | ConstTerm                     {}
    337  1.1.1.1.2.2     skrll     ;
    338  1.1.1.1.2.2     skrll 
    339  1.1.1.1.2.2     skrll StringData
    340  1.1.1.1.2.2     skrll     : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    341  1.1.1.1.2.2     skrll     | String                        {}
    342  1.1.1.1.2.2     skrll     ;
    343  1.1.1.1.2.2     skrll 
    344  1.1.1.1.2.2     skrll ByteConst
    345  1.1.1.1.2.2     skrll     : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
    346  1.1.1.1.2.2     skrll     ;
    347  1.1.1.1.2.2     skrll 
    348  1.1.1.1.2.2     skrll WordConst
    349  1.1.1.1.2.2     skrll     : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
    350  1.1.1.1.2.2     skrll     ;
    351  1.1.1.1.2.2     skrll 
    352  1.1.1.1.2.2     skrll DWordConst
    353  1.1.1.1.2.2     skrll     : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
    354  1.1.1.1.2.2     skrll     ;
    355  1.1.1.1.2.2     skrll 
    356  1.1.1.1.2.2     skrll QWordConst
    357  1.1.1.1.2.2     skrll     : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
    358  1.1.1.1.2.2     skrll     ;
    359  1.1.1.1.2.2     skrll 
    360  1.1.1.1.2.2     skrll /*
    361  1.1.1.1.2.2     skrll  * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
    362  1.1.1.1.2.2     skrll  * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
    363  1.1.1.1.2.2     skrll  * to simple integers. It is an error if these types of expressions cannot be
    364  1.1.1.1.2.2     skrll  * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
    365  1.1.1.1.2.2     skrll  * Note: The required byte length of the constant is passed through to the
    366  1.1.1.1.2.2     skrll  * constant folding code in the node AmlLength field.
    367  1.1.1.1.2.2     skrll  */
    368  1.1.1.1.2.2     skrll ByteConstExpr
    369  1.1.1.1.2.2     skrll     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
    370  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
    371  1.1.1.1.2.2     skrll     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
    372  1.1.1.1.2.2     skrll     | ByteConst                     {}
    373  1.1.1.1.2.2     skrll     ;
    374  1.1.1.1.2.2     skrll 
    375  1.1.1.1.2.2     skrll WordConstExpr
    376  1.1.1.1.2.2     skrll     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
    377  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
    378  1.1.1.1.2.2     skrll     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
    379  1.1.1.1.2.2     skrll     | WordConst                     {}
    380  1.1.1.1.2.2     skrll     ;
    381  1.1.1.1.2.2     skrll 
    382  1.1.1.1.2.2     skrll DWordConstExpr
    383  1.1.1.1.2.2     skrll     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
    384  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
    385  1.1.1.1.2.2     skrll     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
    386  1.1.1.1.2.2     skrll     | DWordConst                    {}
    387  1.1.1.1.2.2     skrll     ;
    388  1.1.1.1.2.2     skrll 
    389  1.1.1.1.2.2     skrll QWordConstExpr
    390  1.1.1.1.2.2     skrll     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
    391  1.1.1.1.2.2     skrll     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
    392  1.1.1.1.2.2     skrll     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
    393  1.1.1.1.2.2     skrll     | QWordConst                    {}
    394  1.1.1.1.2.2     skrll     ;
    395  1.1.1.1.2.2     skrll 
    396  1.1.1.1.2.2     skrll ConstTerm
    397  1.1.1.1.2.2     skrll     : ConstExprTerm                 {}
    398  1.1.1.1.2.2     skrll     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
    399  1.1.1.1.2.2     skrll     ;
    400  1.1.1.1.2.2     skrll 
    401  1.1.1.1.2.2     skrll ConstExprTerm
    402  1.1.1.1.2.2     skrll     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
    403  1.1.1.1.2.2     skrll     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
    404  1.1.1.1.2.2     skrll     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
    405  1.1.1.1.2.2     skrll     | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
    406  1.1.1.1.2.2     skrll     | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
    407  1.1.1.1.2.2     skrll     | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
    408  1.1.1.1.2.2     skrll     | PARSEOP___PATH__              {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
    409  1.1.1.1.2.2     skrll     ;
    410  1.1.1.1.2.2     skrll 
    411  1.1.1.1.2.2     skrll Integer
    412  1.1.1.1.2.2     skrll     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
    413  1.1.1.1.2.2     skrll     ;
    414  1.1.1.1.2.2     skrll 
    415  1.1.1.1.2.2     skrll String
    416  1.1.1.1.2.2     skrll     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
    417  1.1.1.1.2.2     skrll     ;
    418  1.1.1.1.2.2     skrll 
    419  1.1.1.1.2.2     skrll 
    420  1.1.1.1.2.2     skrll /*******************************************************************************
    421  1.1.1.1.2.2     skrll  *
    422  1.1.1.1.2.2     skrll  * ASL Opcode Terms
    423  1.1.1.1.2.2     skrll  *
    424  1.1.1.1.2.2     skrll  ******************************************************************************/
    425  1.1.1.1.2.2     skrll 
    426  1.1.1.1.2.2     skrll CompilerDirective
    427  1.1.1.1.2.2     skrll     : IncludeTerm                   {}
    428  1.1.1.1.2.2     skrll     | IncludeEndTerm                {}
    429  1.1.1.1.2.2     skrll     | ExternalTerm                  {}
    430  1.1.1.1.2.2     skrll     ;
    431  1.1.1.1.2.2     skrll 
    432  1.1.1.1.2.2     skrll NamedObject
    433  1.1.1.1.2.2     skrll     : BankFieldTerm                 {}
    434  1.1.1.1.2.2     skrll     | CreateBitFieldTerm            {}
    435  1.1.1.1.2.2     skrll     | CreateByteFieldTerm           {}
    436  1.1.1.1.2.2     skrll     | CreateDWordFieldTerm          {}
    437  1.1.1.1.2.2     skrll     | CreateFieldTerm               {}
    438  1.1.1.1.2.2     skrll     | CreateQWordFieldTerm          {}
    439  1.1.1.1.2.2     skrll     | CreateWordFieldTerm           {}
    440  1.1.1.1.2.2     skrll     | DataRegionTerm                {}
    441  1.1.1.1.2.2     skrll     | DeviceTerm                    {}
    442  1.1.1.1.2.2     skrll     | EventTerm                     {}
    443  1.1.1.1.2.2     skrll     | FieldTerm                     {}
    444  1.1.1.1.2.2     skrll     | FunctionTerm                  {}
    445  1.1.1.1.2.2     skrll     | IndexFieldTerm                {}
    446  1.1.1.1.2.2     skrll     | MethodTerm                    {}
    447  1.1.1.1.2.2     skrll     | MutexTerm                     {}
    448  1.1.1.1.2.2     skrll     | OpRegionTerm                  {}
    449  1.1.1.1.2.2     skrll     | PowerResTerm                  {}
    450  1.1.1.1.2.2     skrll     | ProcessorTerm                 {}
    451  1.1.1.1.2.2     skrll     | ThermalZoneTerm               {}
    452  1.1.1.1.2.2     skrll     ;
    453  1.1.1.1.2.2     skrll 
    454  1.1.1.1.2.2     skrll NameSpaceModifier
    455  1.1.1.1.2.2     skrll     : AliasTerm                     {}
    456  1.1.1.1.2.2     skrll     | NameTerm                      {}
    457  1.1.1.1.2.2     skrll     | ScopeTerm                     {}
    458  1.1.1.1.2.2     skrll     ;
    459  1.1.1.1.2.2     skrll 
    460  1.1.1.1.2.2     skrll /* For ObjectType: SuperName except for MethodInvocationTerm */
    461  1.1.1.1.2.2     skrll 
    462  1.1.1.1.2.2     skrll ObjectTypeName
    463  1.1.1.1.2.2     skrll     : NameString                    {}
    464  1.1.1.1.2.2     skrll     | ArgTerm                       {}
    465  1.1.1.1.2.2     skrll     | LocalTerm                     {}
    466  1.1.1.1.2.2     skrll     | DebugTerm                     {}
    467  1.1.1.1.2.2     skrll     | RefOfTerm                     {}
    468  1.1.1.1.2.2     skrll     | DerefOfTerm                   {}
    469  1.1.1.1.2.2     skrll     | IndexTerm                     {}
    470  1.1.1.1.2.2     skrll /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
    471  1.1.1.1.2.2     skrll     ;
    472  1.1.1.1.2.2     skrll 
    473  1.1.1.1.2.2     skrll RequiredTarget
    474  1.1.1.1.2.2     skrll     : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    475  1.1.1.1.2.2     skrll     ;
    476  1.1.1.1.2.2     skrll 
    477  1.1.1.1.2.2     skrll SimpleTarget
    478  1.1.1.1.2.2     skrll     : NameString                    {}
    479  1.1.1.1.2.2     skrll     | LocalTerm                     {}
    480  1.1.1.1.2.2     skrll     | ArgTerm                       {}
    481  1.1.1.1.2.2     skrll     ;
    482  1.1.1.1.2.2     skrll 
    483  1.1.1.1.2.2     skrll /* Opcode types */
    484  1.1.1.1.2.2     skrll 
    485  1.1.1.1.2.2     skrll Type1Opcode
    486  1.1.1.1.2.2     skrll     : BreakTerm                     {}
    487  1.1.1.1.2.2     skrll     | BreakPointTerm                {}
    488  1.1.1.1.2.2     skrll     | ContinueTerm                  {}
    489  1.1.1.1.2.2     skrll     | FatalTerm                     {}
    490  1.1.1.1.2.3     skrll     | ForTerm                       {}
    491  1.1.1.1.2.2     skrll     | ElseIfTerm                    {}
    492  1.1.1.1.2.2     skrll     | LoadTerm                      {}
    493  1.1.1.1.2.2     skrll     | NoOpTerm                      {}
    494  1.1.1.1.2.2     skrll     | NotifyTerm                    {}
    495  1.1.1.1.2.2     skrll     | ReleaseTerm                   {}
    496  1.1.1.1.2.2     skrll     | ResetTerm                     {}
    497  1.1.1.1.2.2     skrll     | ReturnTerm                    {}
    498  1.1.1.1.2.2     skrll     | SignalTerm                    {}
    499  1.1.1.1.2.2     skrll     | SleepTerm                     {}
    500  1.1.1.1.2.2     skrll     | StallTerm                     {}
    501  1.1.1.1.2.2     skrll     | SwitchTerm                    {}
    502  1.1.1.1.2.2     skrll     | UnloadTerm                    {}
    503  1.1.1.1.2.2     skrll     | WhileTerm                     {}
    504  1.1.1.1.2.2     skrll     ;
    505  1.1.1.1.2.2     skrll 
    506  1.1.1.1.2.2     skrll Type2Opcode
    507  1.1.1.1.2.2     skrll     : AcquireTerm                   {}
    508  1.1.1.1.2.2     skrll     | CondRefOfTerm                 {}
    509  1.1.1.1.2.2     skrll     | CopyObjectTerm                {}
    510  1.1.1.1.2.2     skrll     | DerefOfTerm                   {}
    511  1.1.1.1.2.2     skrll     | ObjectTypeTerm                {}
    512  1.1.1.1.2.2     skrll     | RefOfTerm                     {}
    513  1.1.1.1.2.2     skrll     | SizeOfTerm                    {}
    514  1.1.1.1.2.2     skrll     | StoreTerm                     {}
    515  1.1.1.1.2.2     skrll     | EqualsTerm                    {}
    516  1.1.1.1.2.2     skrll     | TimerTerm                     {}
    517  1.1.1.1.2.2     skrll     | WaitTerm                      {}
    518  1.1.1.1.2.2     skrll     | MethodInvocationTerm          {}
    519  1.1.1.1.2.2     skrll     ;
    520  1.1.1.1.2.2     skrll 
    521  1.1.1.1.2.2     skrll /*
    522  1.1.1.1.2.2     skrll  * Type 3/4/5 opcodes
    523  1.1.1.1.2.2     skrll  */
    524  1.1.1.1.2.2     skrll Type2IntegerOpcode                  /* "Type3" opcodes */
    525  1.1.1.1.2.2     skrll     : Expression                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    526  1.1.1.1.2.2     skrll     | AddTerm                       {}
    527  1.1.1.1.2.2     skrll     | AndTerm                       {}
    528          1.1  christos     | DecTerm                       {}
    529          1.1  christos     | DivideTerm                    {}
    530          1.1  christos     | FindSetLeftBitTerm            {}
    531          1.1  christos     | FindSetRightBitTerm           {}
    532          1.1  christos     | FromBCDTerm                   {}
    533          1.1  christos     | IncTerm                       {}
    534          1.1  christos     | IndexTerm                     {}
    535          1.1  christos     | LAndTerm                      {}
    536          1.1  christos     | LEqualTerm                    {}
    537          1.1  christos     | LGreaterTerm                  {}
    538          1.1  christos     | LGreaterEqualTerm             {}
    539          1.1  christos     | LLessTerm                     {}
    540          1.1  christos     | LLessEqualTerm                {}
    541          1.1  christos     | LNotTerm                      {}
    542          1.1  christos     | LNotEqualTerm                 {}
    543          1.1  christos     | LoadTableTerm                 {}
    544          1.1  christos     | LOrTerm                       {}
    545          1.1  christos     | MatchTerm                     {}
    546          1.1  christos     | ModTerm                       {}
    547          1.1  christos     | MultiplyTerm                  {}
    548          1.1  christos     | NAndTerm                      {}
    549          1.1  christos     | NOrTerm                       {}
    550          1.1  christos     | NotTerm                       {}
    551          1.1  christos     | OrTerm                        {}
    552          1.1  christos     | ShiftLeftTerm                 {}
    553          1.1  christos     | ShiftRightTerm                {}
    554          1.1  christos     | SubtractTerm                  {}
    555          1.1  christos     | ToBCDTerm                     {}
    556          1.1  christos     | ToIntegerTerm                 {}
    557          1.1  christos     | XOrTerm                       {}
    558          1.1  christos     ;
    559          1.1  christos 
    560          1.1  christos Type2StringOpcode                   /* "Type4" Opcodes */
    561          1.1  christos     : ToDecimalStringTerm           {}
    562          1.1  christos     | ToHexStringTerm               {}
    563          1.1  christos     | ToStringTerm                  {}
    564          1.1  christos     ;
    565          1.1  christos 
    566          1.1  christos Type2BufferOpcode                   /* "Type5" Opcodes */
    567          1.1  christos     : ToBufferTerm                  {}
    568          1.1  christos     | ConcatResTerm                 {}
    569          1.1  christos     ;
    570          1.1  christos 
    571          1.1  christos Type2BufferOrStringOpcode
    572  1.1.1.1.2.1     skrll     : ConcatTerm                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    573  1.1.1.1.2.1     skrll     | PrintfTerm                    {}
    574  1.1.1.1.2.1     skrll     | FprintfTerm                   {}
    575          1.1  christos     | MidTerm                       {}
    576          1.1  christos     ;
    577          1.1  christos 
    578          1.1  christos /*
    579          1.1  christos  * A type 3 opcode evaluates to an Integer and cannot have a destination operand
    580          1.1  christos  */
    581          1.1  christos Type3Opcode
    582          1.1  christos     : EISAIDTerm                    {}
    583          1.1  christos     ;
    584          1.1  christos 
    585          1.1  christos /* Obsolete
    586          1.1  christos Type4Opcode
    587          1.1  christos     : ConcatTerm                    {}
    588          1.1  christos     | ToDecimalStringTerm           {}
    589          1.1  christos     | ToHexStringTerm               {}
    590          1.1  christos     | MidTerm                       {}
    591          1.1  christos     | ToStringTerm                  {}
    592          1.1  christos     ;
    593          1.1  christos */
    594          1.1  christos 
    595          1.1  christos Type5Opcode
    596          1.1  christos     : ResourceTemplateTerm          {}
    597          1.1  christos     | UnicodeTerm                   {}
    598  1.1.1.1.2.1     skrll     | ToPLDTerm                     {}
    599          1.1  christos     | ToUUIDTerm                    {}
    600          1.1  christos     ;
    601          1.1  christos 
    602          1.1  christos Type6Opcode
    603          1.1  christos     : RefOfTerm                     {}
    604          1.1  christos     | DerefOfTerm                   {}
    605          1.1  christos     | IndexTerm                     {}
    606  1.1.1.1.2.2     skrll     | IndexExpTerm                  {}
    607  1.1.1.1.2.1     skrll     | MethodInvocationTerm          {}
    608          1.1  christos     ;
    609          1.1  christos 
    610          1.1  christos 
    611  1.1.1.1.2.2     skrll /*******************************************************************************
    612  1.1.1.1.2.2     skrll  *
    613  1.1.1.1.2.2     skrll  * ASL Primary Terms
    614  1.1.1.1.2.2     skrll  *
    615  1.1.1.1.2.2     skrll  ******************************************************************************/
    616  1.1.1.1.2.2     skrll 
    617  1.1.1.1.2.2     skrll AccessAsTerm
    618  1.1.1.1.2.2     skrll     : PARSEOP_ACCESSAS '('
    619  1.1.1.1.2.2     skrll         AccessTypeKeyword
    620  1.1.1.1.2.2     skrll         OptionalAccessAttribTerm
    621  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
    622  1.1.1.1.2.2     skrll     | PARSEOP_ACCESSAS '('
    623  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    624          1.1  christos     ;
    625          1.1  christos 
    626  1.1.1.1.2.2     skrll AcquireTerm
    627  1.1.1.1.2.2     skrll     : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
    628  1.1.1.1.2.2     skrll         SuperName
    629  1.1.1.1.2.2     skrll         ',' WordConstExpr
    630  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
    631  1.1.1.1.2.2     skrll     | PARSEOP_ACQUIRE '('
    632  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    633  1.1.1.1.2.2     skrll     ;
    634  1.1.1.1.2.2     skrll 
    635  1.1.1.1.2.2     skrll AddTerm
    636  1.1.1.1.2.2     skrll     : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
    637  1.1.1.1.2.2     skrll         TermArg
    638  1.1.1.1.2.2     skrll         TermArgItem
    639  1.1.1.1.2.2     skrll         Target
    640  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    641  1.1.1.1.2.2     skrll     | PARSEOP_ADD '('
    642          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    643          1.1  christos     ;
    644          1.1  christos 
    645  1.1.1.1.2.2     skrll AliasTerm
    646  1.1.1.1.2.2     skrll     : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
    647  1.1.1.1.2.2     skrll         NameString
    648  1.1.1.1.2.2     skrll         NameStringItem
    649  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
    650  1.1.1.1.2.2     skrll                                         TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
    651  1.1.1.1.2.2     skrll     | PARSEOP_ALIAS '('
    652  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    653  1.1.1.1.2.2     skrll     ;
    654          1.1  christos 
    655  1.1.1.1.2.2     skrll AndTerm
    656  1.1.1.1.2.2     skrll     : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
    657  1.1.1.1.2.2     skrll         TermArg
    658  1.1.1.1.2.2     skrll         TermArgItem
    659  1.1.1.1.2.2     skrll         Target
    660  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    661  1.1.1.1.2.2     skrll     | PARSEOP_AND '('
    662  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    663  1.1.1.1.2.2     skrll     ;
    664          1.1  christos 
    665  1.1.1.1.2.2     skrll ArgTerm
    666  1.1.1.1.2.2     skrll     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
    667  1.1.1.1.2.2     skrll     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
    668  1.1.1.1.2.2     skrll     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
    669  1.1.1.1.2.2     skrll     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
    670  1.1.1.1.2.2     skrll     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
    671  1.1.1.1.2.2     skrll     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
    672  1.1.1.1.2.2     skrll     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
    673  1.1.1.1.2.2     skrll     ;
    674          1.1  christos 
    675          1.1  christos BankFieldTerm
    676          1.1  christos     : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
    677          1.1  christos         NameString
    678          1.1  christos         NameStringItem
    679          1.1  christos         TermArgItem
    680          1.1  christos         ',' AccessTypeKeyword
    681          1.1  christos         ',' LockRuleKeyword
    682          1.1  christos         ',' UpdateRuleKeyword
    683          1.1  christos         ')' '{'
    684          1.1  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
    685          1.1  christos     | PARSEOP_BANKFIELD '('
    686          1.1  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
    687          1.1  christos     ;
    688          1.1  christos 
    689  1.1.1.1.2.2     skrll BreakTerm
    690  1.1.1.1.2.2     skrll     : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
    691          1.1  christos     ;
    692          1.1  christos 
    693  1.1.1.1.2.2     skrll BreakPointTerm
    694  1.1.1.1.2.2     skrll     : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
    695          1.1  christos     ;
    696          1.1  christos 
    697  1.1.1.1.2.2     skrll BufferTerm
    698  1.1.1.1.2.2     skrll     : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
    699  1.1.1.1.2.3     skrll         OptionalBufferLength
    700  1.1.1.1.2.2     skrll         ')' '{'
    701  1.1.1.1.2.2     skrll             BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    702  1.1.1.1.2.2     skrll     | PARSEOP_BUFFER '('
    703  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    704          1.1  christos     ;
    705          1.1  christos 
    706  1.1.1.1.2.2     skrll BufferTermData
    707  1.1.1.1.2.2     skrll     : ByteList                      {}
    708  1.1.1.1.2.2     skrll     | StringData                    {}
    709  1.1.1.1.2.2     skrll     ;
    710  1.1.1.1.2.2     skrll 
    711  1.1.1.1.2.2     skrll CaseTerm
    712  1.1.1.1.2.2     skrll     : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
    713  1.1.1.1.2.2     skrll         DataObject
    714  1.1.1.1.2.2     skrll         ')' '{'
    715  1.1.1.1.2.2     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    716  1.1.1.1.2.2     skrll     | PARSEOP_CASE '('
    717          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    718          1.1  christos     ;
    719          1.1  christos 
    720  1.1.1.1.2.2     skrll ConcatTerm
    721  1.1.1.1.2.2     skrll     : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
    722  1.1.1.1.2.2     skrll         TermArg
    723  1.1.1.1.2.2     skrll         TermArgItem
    724  1.1.1.1.2.2     skrll         Target
    725  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    726  1.1.1.1.2.2     skrll     | PARSEOP_CONCATENATE '('
    727  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    728  1.1.1.1.2.2     skrll     ;
    729  1.1.1.1.2.2     skrll 
    730  1.1.1.1.2.2     skrll ConcatResTerm
    731  1.1.1.1.2.2     skrll     : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
    732  1.1.1.1.2.2     skrll         TermArg
    733  1.1.1.1.2.2     skrll         TermArgItem
    734  1.1.1.1.2.2     skrll         Target
    735  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    736  1.1.1.1.2.2     skrll     | PARSEOP_CONCATENATERESTEMPLATE '('
    737          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    738          1.1  christos     ;
    739          1.1  christos 
    740          1.1  christos ConnectionTerm
    741          1.1  christos     : PARSEOP_CONNECTION '('
    742          1.1  christos         NameString
    743          1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
    744          1.1  christos     | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
    745          1.1  christos         ResourceMacroTerm
    746          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3, 1,
    747          1.1  christos                                             TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
    748          1.1  christos                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    749          1.1  christos                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    750          1.1  christos                                                 $4));}
    751          1.1  christos     | PARSEOP_CONNECTION '('
    752          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    753          1.1  christos     ;
    754          1.1  christos 
    755  1.1.1.1.2.2     skrll CondRefOfTerm
    756  1.1.1.1.2.2     skrll     : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
    757  1.1.1.1.2.2     skrll         SuperName
    758  1.1.1.1.2.2     skrll         Target
    759  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    760  1.1.1.1.2.2     skrll     | PARSEOP_CONDREFOF '('
    761  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    762  1.1.1.1.2.2     skrll     ;
    763  1.1.1.1.2.2     skrll 
    764  1.1.1.1.2.2     skrll ContinueTerm
    765  1.1.1.1.2.2     skrll     : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
    766  1.1.1.1.2.2     skrll     ;
    767  1.1.1.1.2.2     skrll 
    768  1.1.1.1.2.2     skrll CopyObjectTerm
    769  1.1.1.1.2.2     skrll     : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
    770  1.1.1.1.2.2     skrll         TermArg
    771  1.1.1.1.2.2     skrll         ',' SimpleTarget
    772  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
    773  1.1.1.1.2.2     skrll     | PARSEOP_COPYOBJECT '('
    774  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    775  1.1.1.1.2.2     skrll     ;
    776  1.1.1.1.2.2     skrll 
    777          1.1  christos CreateBitFieldTerm
    778          1.1  christos     : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
    779          1.1  christos         TermArg
    780          1.1  christos         TermArgItem
    781          1.1  christos         NameStringItem
    782          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    783          1.1  christos     | PARSEOP_CREATEBITFIELD '('
    784          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    785          1.1  christos     ;
    786          1.1  christos 
    787          1.1  christos CreateByteFieldTerm
    788          1.1  christos     : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
    789          1.1  christos         TermArg
    790          1.1  christos         TermArgItem
    791          1.1  christos         NameStringItem
    792          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    793          1.1  christos     | PARSEOP_CREATEBYTEFIELD '('
    794          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    795          1.1  christos     ;
    796          1.1  christos 
    797          1.1  christos CreateDWordFieldTerm
    798          1.1  christos     : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
    799          1.1  christos         TermArg
    800          1.1  christos         TermArgItem
    801          1.1  christos         NameStringItem
    802          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    803          1.1  christos     | PARSEOP_CREATEDWORDFIELD '('
    804          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    805          1.1  christos     ;
    806          1.1  christos 
    807          1.1  christos CreateFieldTerm
    808          1.1  christos     : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
    809          1.1  christos         TermArg
    810          1.1  christos         TermArgItem
    811          1.1  christos         TermArgItem
    812          1.1  christos         NameStringItem
    813          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
    814          1.1  christos     | PARSEOP_CREATEFIELD '('
    815          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    816          1.1  christos     ;
    817          1.1  christos 
    818          1.1  christos CreateQWordFieldTerm
    819          1.1  christos     : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
    820          1.1  christos         TermArg
    821          1.1  christos         TermArgItem
    822          1.1  christos         NameStringItem
    823          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    824          1.1  christos     | PARSEOP_CREATEQWORDFIELD '('
    825          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    826          1.1  christos     ;
    827          1.1  christos 
    828          1.1  christos CreateWordFieldTerm
    829          1.1  christos     : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
    830          1.1  christos         TermArg
    831          1.1  christos         TermArgItem
    832          1.1  christos         NameStringItem
    833          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    834          1.1  christos     | PARSEOP_CREATEWORDFIELD '('
    835          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    836          1.1  christos     ;
    837          1.1  christos 
    838          1.1  christos DataRegionTerm
    839          1.1  christos     : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
    840          1.1  christos         NameString
    841          1.1  christos         TermArgItem
    842          1.1  christos         TermArgItem
    843          1.1  christos         TermArgItem
    844          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
    845          1.1  christos     | PARSEOP_DATATABLEREGION '('
    846          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    847          1.1  christos     ;
    848          1.1  christos 
    849  1.1.1.1.2.2     skrll DebugTerm
    850  1.1.1.1.2.2     skrll     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
    851  1.1.1.1.2.2     skrll     ;
    852  1.1.1.1.2.2     skrll 
    853  1.1.1.1.2.2     skrll DecTerm
    854  1.1.1.1.2.2     skrll     : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
    855  1.1.1.1.2.2     skrll         SuperName
    856  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    857  1.1.1.1.2.2     skrll     | PARSEOP_DECREMENT '('
    858  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    859  1.1.1.1.2.2     skrll     ;
    860  1.1.1.1.2.2     skrll 
    861  1.1.1.1.2.2     skrll DefaultTerm
    862  1.1.1.1.2.2     skrll     : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
    863  1.1.1.1.2.2     skrll         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    864  1.1.1.1.2.2     skrll     | PARSEOP_DEFAULT '{'
    865  1.1.1.1.2.2     skrll         error '}'                   {$$ = AslDoError(); yyclearin;}
    866  1.1.1.1.2.2     skrll     ;
    867  1.1.1.1.2.2     skrll 
    868  1.1.1.1.2.2     skrll DerefOfTerm
    869  1.1.1.1.2.2     skrll     : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
    870  1.1.1.1.2.2     skrll         TermArg
    871  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    872  1.1.1.1.2.2     skrll     | PARSEOP_DEREFOF '('
    873  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    874  1.1.1.1.2.2     skrll     ;
    875  1.1.1.1.2.2     skrll 
    876          1.1  christos DeviceTerm
    877          1.1  christos     : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
    878          1.1  christos         NameString
    879          1.1  christos         ')' '{'
    880  1.1.1.1.2.3     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
    881          1.1  christos     | PARSEOP_DEVICE '('
    882          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    883          1.1  christos     ;
    884          1.1  christos 
    885  1.1.1.1.2.2     skrll DivideTerm
    886  1.1.1.1.2.2     skrll     : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
    887  1.1.1.1.2.2     skrll         TermArg
    888  1.1.1.1.2.2     skrll         TermArgItem
    889  1.1.1.1.2.2     skrll         Target
    890  1.1.1.1.2.2     skrll         Target
    891  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
    892  1.1.1.1.2.2     skrll     | PARSEOP_DIVIDE '('
    893  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    894  1.1.1.1.2.2     skrll     ;
    895  1.1.1.1.2.2     skrll 
    896  1.1.1.1.2.2     skrll EISAIDTerm
    897  1.1.1.1.2.2     skrll     : PARSEOP_EISAID '('
    898  1.1.1.1.2.2     skrll         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
    899  1.1.1.1.2.2     skrll     | PARSEOP_EISAID '('
    900  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    901  1.1.1.1.2.2     skrll     ;
    902  1.1.1.1.2.2     skrll 
    903  1.1.1.1.2.2     skrll ElseIfTerm
    904  1.1.1.1.2.2     skrll     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
    905  1.1.1.1.2.2     skrll     ;
    906  1.1.1.1.2.2     skrll 
    907  1.1.1.1.2.2     skrll ElseTerm
    908  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
    909  1.1.1.1.2.2     skrll     | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    910  1.1.1.1.2.2     skrll         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    911  1.1.1.1.2.2     skrll 
    912  1.1.1.1.2.2     skrll     | PARSEOP_ELSE '{'
    913  1.1.1.1.2.2     skrll         error '}'                   {$$ = AslDoError(); yyclearin;}
    914  1.1.1.1.2.2     skrll 
    915  1.1.1.1.2.2     skrll     | PARSEOP_ELSE
    916  1.1.1.1.2.2     skrll         error                       {$$ = AslDoError(); yyclearin;}
    917  1.1.1.1.2.2     skrll 
    918  1.1.1.1.2.2     skrll     | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    919  1.1.1.1.2.2     skrll         TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    920  1.1.1.1.2.2     skrll         ')' '{'
    921  1.1.1.1.2.2     skrll             TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
    922  1.1.1.1.2.2     skrll         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
    923  1.1.1.1.2.2     skrll                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
    924  1.1.1.1.2.2     skrll 
    925  1.1.1.1.2.2     skrll     | PARSEOP_ELSEIF '('
    926  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    927  1.1.1.1.2.2     skrll 
    928  1.1.1.1.2.2     skrll     | PARSEOP_ELSEIF
    929  1.1.1.1.2.2     skrll         error                       {$$ = AslDoError(); yyclearin;}
    930  1.1.1.1.2.2     skrll     ;
    931  1.1.1.1.2.2     skrll 
    932          1.1  christos EventTerm
    933          1.1  christos     : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
    934          1.1  christos         NameString
    935          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
    936          1.1  christos     | PARSEOP_EVENT '('
    937          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    938          1.1  christos     ;
    939          1.1  christos 
    940  1.1.1.1.2.2     skrll ExternalTerm
    941  1.1.1.1.2.2     skrll     : PARSEOP_EXTERNAL '('
    942  1.1.1.1.2.2     skrll         NameString
    943  1.1.1.1.2.2     skrll         OptionalObjectTypeKeyword
    944  1.1.1.1.2.2     skrll         OptionalParameterTypePackage
    945  1.1.1.1.2.2     skrll         OptionalParameterTypesPackage
    946  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
    947  1.1.1.1.2.2     skrll     | PARSEOP_EXTERNAL '('
    948  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    949  1.1.1.1.2.2     skrll     ;
    950  1.1.1.1.2.2     skrll 
    951  1.1.1.1.2.2     skrll FatalTerm
    952  1.1.1.1.2.2     skrll     : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
    953  1.1.1.1.2.2     skrll         ByteConstExpr
    954  1.1.1.1.2.2     skrll         ',' DWordConstExpr
    955  1.1.1.1.2.2     skrll         TermArgItem
    956  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    957  1.1.1.1.2.2     skrll     | PARSEOP_FATAL '('
    958  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
    959  1.1.1.1.2.2     skrll     ;
    960  1.1.1.1.2.2     skrll 
    961          1.1  christos FieldTerm
    962          1.1  christos     : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
    963          1.1  christos         NameString
    964          1.1  christos         ',' AccessTypeKeyword
    965          1.1  christos         ',' LockRuleKeyword
    966          1.1  christos         ',' UpdateRuleKeyword
    967          1.1  christos         ')' '{'
    968          1.1  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
    969          1.1  christos     | PARSEOP_FIELD '('
    970          1.1  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
    971          1.1  christos     ;
    972          1.1  christos 
    973  1.1.1.1.2.2     skrll FindSetLeftBitTerm
    974  1.1.1.1.2.2     skrll     : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
    975  1.1.1.1.2.2     skrll         TermArg
    976  1.1.1.1.2.2     skrll         Target
    977  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    978  1.1.1.1.2.2     skrll     | PARSEOP_FINDSETLEFTBIT '('
    979          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    980          1.1  christos     ;
    981          1.1  christos 
    982  1.1.1.1.2.2     skrll FindSetRightBitTerm
    983  1.1.1.1.2.2     skrll     : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
    984  1.1.1.1.2.2     skrll         TermArg
    985  1.1.1.1.2.2     skrll         Target
    986  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    987  1.1.1.1.2.2     skrll     | PARSEOP_FINDSETRIGHTBIT '('
    988          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    989          1.1  christos     ;
    990          1.1  christos 
    991  1.1.1.1.2.3     skrll     /* Convert a For() loop to a While() loop */
    992  1.1.1.1.2.3     skrll ForTerm
    993  1.1.1.1.2.3     skrll     : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
    994  1.1.1.1.2.3     skrll         OptionalTermArg ','         {}
    995  1.1.1.1.2.3     skrll         OptionalPredicate ','
    996  1.1.1.1.2.3     skrll         OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
    997  1.1.1.1.2.3     skrll                                         TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
    998  1.1.1.1.2.3     skrll         ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
    999  1.1.1.1.2.3     skrll                                     {$<n>$ = TrLinkPeerNode ($13,$9);
   1000  1.1.1.1.2.3     skrll                                         $$ = $<n>10;}
   1001  1.1.1.1.2.3     skrll     ;
   1002  1.1.1.1.2.3     skrll 
   1003  1.1.1.1.2.3     skrll OptionalPredicate
   1004  1.1.1.1.2.3     skrll     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
   1005  1.1.1.1.2.3     skrll     | TermArg                       {$$ = $1;}
   1006  1.1.1.1.2.3     skrll     ;
   1007  1.1.1.1.2.3     skrll 
   1008  1.1.1.1.2.2     skrll FprintfTerm
   1009  1.1.1.1.2.2     skrll     : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
   1010  1.1.1.1.2.2     skrll         TermArg ','
   1011  1.1.1.1.2.2     skrll         StringData
   1012  1.1.1.1.2.2     skrll         PrintfArgList
   1013  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
   1014  1.1.1.1.2.2     skrll     | PARSEOP_FPRINTF '('
   1015          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1016          1.1  christos     ;
   1017          1.1  christos 
   1018  1.1.1.1.2.2     skrll FromBCDTerm
   1019  1.1.1.1.2.2     skrll     : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
   1020  1.1.1.1.2.2     skrll         TermArg
   1021  1.1.1.1.2.2     skrll         Target
   1022  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1023  1.1.1.1.2.2     skrll     | PARSEOP_FROMBCD '('
   1024          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1025          1.1  christos     ;
   1026          1.1  christos 
   1027  1.1.1.1.2.2     skrll FunctionTerm
   1028  1.1.1.1.2.2     skrll     : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
   1029          1.1  christos         NameString
   1030  1.1.1.1.2.2     skrll         OptionalParameterTypePackage
   1031  1.1.1.1.2.2     skrll         OptionalParameterTypesPackage
   1032          1.1  christos         ')' '{'
   1033  1.1.1.1.2.2     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
   1034  1.1.1.1.2.2     skrll                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
   1035  1.1.1.1.2.2     skrll                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
   1036  1.1.1.1.2.2     skrll                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
   1037  1.1.1.1.2.2     skrll     | PARSEOP_FUNCTION '('
   1038          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1039          1.1  christos     ;
   1040          1.1  christos 
   1041  1.1.1.1.2.2     skrll IfTerm
   1042  1.1.1.1.2.2     skrll     : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
   1043  1.1.1.1.2.2     skrll         TermArg
   1044          1.1  christos         ')' '{'
   1045  1.1.1.1.2.2     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1046          1.1  christos 
   1047  1.1.1.1.2.2     skrll     | PARSEOP_IF '('
   1048          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1049          1.1  christos     ;
   1050          1.1  christos 
   1051  1.1.1.1.2.2     skrll IncludeTerm
   1052  1.1.1.1.2.2     skrll     : PARSEOP_INCLUDE '('
   1053  1.1.1.1.2.2     skrll         String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
   1054  1.1.1.1.2.2     skrll                                         FlOpenIncludeFile ($3);}
   1055  1.1.1.1.2.2     skrll     ;
   1056          1.1  christos 
   1057  1.1.1.1.2.2     skrll IncludeEndTerm
   1058  1.1.1.1.2.2     skrll     : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
   1059  1.1.1.1.2.2     skrll     ;
   1060          1.1  christos 
   1061  1.1.1.1.2.2     skrll IncTerm
   1062  1.1.1.1.2.2     skrll     : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
   1063  1.1.1.1.2.2     skrll         SuperName
   1064  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1065  1.1.1.1.2.2     skrll     | PARSEOP_INCREMENT '('
   1066  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1067  1.1.1.1.2.2     skrll     ;
   1068          1.1  christos 
   1069  1.1.1.1.2.2     skrll IndexFieldTerm
   1070  1.1.1.1.2.2     skrll     : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
   1071          1.1  christos         NameString
   1072          1.1  christos         NameStringItem
   1073  1.1.1.1.2.2     skrll         ',' AccessTypeKeyword
   1074  1.1.1.1.2.2     skrll         ',' LockRuleKeyword
   1075  1.1.1.1.2.2     skrll         ',' UpdateRuleKeyword
   1076  1.1.1.1.2.2     skrll         ')' '{'
   1077  1.1.1.1.2.2     skrll             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
   1078  1.1.1.1.2.2     skrll     | PARSEOP_INDEXFIELD '('
   1079  1.1.1.1.2.2     skrll         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
   1080          1.1  christos     ;
   1081          1.1  christos 
   1082  1.1.1.1.2.2     skrll IndexTerm
   1083  1.1.1.1.2.2     skrll     : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
   1084  1.1.1.1.2.2     skrll         TermArg
   1085  1.1.1.1.2.2     skrll         TermArgItem
   1086  1.1.1.1.2.2     skrll         Target
   1087  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1088  1.1.1.1.2.2     skrll     | PARSEOP_INDEX '('
   1089          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1090          1.1  christos     ;
   1091          1.1  christos 
   1092  1.1.1.1.2.2     skrll LAndTerm
   1093  1.1.1.1.2.2     skrll     : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
   1094  1.1.1.1.2.2     skrll         TermArg
   1095  1.1.1.1.2.2     skrll         TermArgItem
   1096  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1097  1.1.1.1.2.2     skrll     | PARSEOP_LAND '('
   1098          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1099          1.1  christos     ;
   1100          1.1  christos 
   1101  1.1.1.1.2.2     skrll LEqualTerm
   1102  1.1.1.1.2.2     skrll     : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1103  1.1.1.1.2.2     skrll         TermArg
   1104  1.1.1.1.2.2     skrll         TermArgItem
   1105  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1106  1.1.1.1.2.2     skrll     | PARSEOP_LEQUAL '('
   1107  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1108          1.1  christos     ;
   1109          1.1  christos 
   1110  1.1.1.1.2.2     skrll LGreaterEqualTerm
   1111  1.1.1.1.2.2     skrll     : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1112  1.1.1.1.2.2     skrll         TermArg
   1113  1.1.1.1.2.2     skrll         TermArgItem
   1114  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1115  1.1.1.1.2.2     skrll     | PARSEOP_LGREATEREQUAL '('
   1116  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1117          1.1  christos     ;
   1118          1.1  christos 
   1119  1.1.1.1.2.2     skrll LGreaterTerm
   1120  1.1.1.1.2.2     skrll     : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1121  1.1.1.1.2.2     skrll         TermArg
   1122  1.1.1.1.2.2     skrll         TermArgItem
   1123  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1124  1.1.1.1.2.2     skrll     | PARSEOP_LGREATER '('
   1125  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1126          1.1  christos     ;
   1127          1.1  christos 
   1128  1.1.1.1.2.2     skrll LLessEqualTerm
   1129  1.1.1.1.2.2     skrll     : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1130  1.1.1.1.2.2     skrll         TermArg
   1131          1.1  christos         TermArgItem
   1132  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1133  1.1.1.1.2.2     skrll     | PARSEOP_LLESSEQUAL '('
   1134          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1135          1.1  christos     ;
   1136          1.1  christos 
   1137  1.1.1.1.2.2     skrll LLessTerm
   1138  1.1.1.1.2.2     skrll     : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1139  1.1.1.1.2.2     skrll         TermArg
   1140  1.1.1.1.2.2     skrll         TermArgItem
   1141  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1142  1.1.1.1.2.2     skrll     | PARSEOP_LLESS '('
   1143  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1144          1.1  christos     ;
   1145          1.1  christos 
   1146  1.1.1.1.2.2     skrll LNotEqualTerm
   1147  1.1.1.1.2.2     skrll     : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1148          1.1  christos         TermArg
   1149  1.1.1.1.2.2     skrll         TermArgItem
   1150  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1151  1.1.1.1.2.2     skrll     | PARSEOP_LNOTEQUAL '('
   1152          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1153          1.1  christos     ;
   1154          1.1  christos 
   1155  1.1.1.1.2.2     skrll LNotTerm
   1156  1.1.1.1.2.2     skrll     : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
   1157  1.1.1.1.2.2     skrll         TermArg
   1158  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1159  1.1.1.1.2.2     skrll     | PARSEOP_LNOT '('
   1160          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1161  1.1.1.1.2.2     skrll     ;
   1162          1.1  christos 
   1163  1.1.1.1.2.2     skrll LoadTableTerm
   1164  1.1.1.1.2.2     skrll     : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
   1165  1.1.1.1.2.2     skrll         TermArg
   1166  1.1.1.1.2.2     skrll         TermArgItem
   1167  1.1.1.1.2.2     skrll         TermArgItem
   1168  1.1.1.1.2.2     skrll         OptionalListString
   1169  1.1.1.1.2.2     skrll         OptionalListString
   1170  1.1.1.1.2.2     skrll         OptionalReference
   1171  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
   1172  1.1.1.1.2.2     skrll     | PARSEOP_LOADTABLE '('
   1173  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1174          1.1  christos     ;
   1175          1.1  christos 
   1176          1.1  christos LoadTerm
   1177          1.1  christos     : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
   1178          1.1  christos         NameString
   1179          1.1  christos         RequiredTarget
   1180          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1181          1.1  christos     | PARSEOP_LOAD '('
   1182          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1183          1.1  christos     ;
   1184          1.1  christos 
   1185  1.1.1.1.2.2     skrll LocalTerm
   1186  1.1.1.1.2.2     skrll     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
   1187  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
   1188  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
   1189  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
   1190  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
   1191  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
   1192  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
   1193  1.1.1.1.2.2     skrll     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
   1194          1.1  christos     ;
   1195          1.1  christos 
   1196  1.1.1.1.2.2     skrll LOrTerm
   1197  1.1.1.1.2.2     skrll     : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
   1198  1.1.1.1.2.2     skrll         TermArg
   1199          1.1  christos         TermArgItem
   1200          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1201  1.1.1.1.2.2     skrll     | PARSEOP_LOR '('
   1202          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1203          1.1  christos     ;
   1204          1.1  christos 
   1205  1.1.1.1.2.2     skrll MatchTerm
   1206  1.1.1.1.2.2     skrll     : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
   1207          1.1  christos         TermArg
   1208  1.1.1.1.2.2     skrll         ',' MatchOpKeyword
   1209  1.1.1.1.2.2     skrll         TermArgItem
   1210  1.1.1.1.2.2     skrll         ',' MatchOpKeyword
   1211  1.1.1.1.2.2     skrll         TermArgItem
   1212  1.1.1.1.2.2     skrll         TermArgItem
   1213  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
   1214  1.1.1.1.2.2     skrll     | PARSEOP_MATCH '('
   1215          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1216          1.1  christos     ;
   1217          1.1  christos 
   1218  1.1.1.1.2.2     skrll MethodTerm
   1219  1.1.1.1.2.2     skrll     : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
   1220  1.1.1.1.2.2     skrll         NameString
   1221  1.1.1.1.2.2     skrll         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
   1222  1.1.1.1.2.2     skrll         OptionalSerializeRuleKeyword
   1223  1.1.1.1.2.2     skrll         OptionalByteConstExpr
   1224  1.1.1.1.2.2     skrll         OptionalParameterTypePackage
   1225  1.1.1.1.2.2     skrll         OptionalParameterTypesPackage
   1226          1.1  christos         ')' '{'
   1227  1.1.1.1.2.2     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
   1228  1.1.1.1.2.2     skrll     | PARSEOP_METHOD '('
   1229          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1230          1.1  christos     ;
   1231          1.1  christos 
   1232  1.1.1.1.2.2     skrll MidTerm
   1233  1.1.1.1.2.2     skrll     : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
   1234          1.1  christos         TermArg
   1235          1.1  christos         TermArgItem
   1236          1.1  christos         TermArgItem
   1237          1.1  christos         Target
   1238  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
   1239  1.1.1.1.2.2     skrll     | PARSEOP_MID '('
   1240          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1241          1.1  christos     ;
   1242          1.1  christos 
   1243  1.1.1.1.2.2     skrll ModTerm
   1244  1.1.1.1.2.2     skrll     : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
   1245          1.1  christos         TermArg
   1246          1.1  christos         TermArgItem
   1247          1.1  christos         Target
   1248          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1249  1.1.1.1.2.2     skrll     | PARSEOP_MOD '('
   1250          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1251          1.1  christos     ;
   1252          1.1  christos 
   1253  1.1.1.1.2.2     skrll MultiplyTerm
   1254  1.1.1.1.2.2     skrll     : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
   1255          1.1  christos         TermArg
   1256          1.1  christos         TermArgItem
   1257          1.1  christos         Target
   1258          1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1259  1.1.1.1.2.2     skrll     | PARSEOP_MULTIPLY '('
   1260          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1261          1.1  christos     ;
   1262          1.1  christos 
   1263  1.1.1.1.2.2     skrll MutexTerm
   1264  1.1.1.1.2.2     skrll     : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
   1265  1.1.1.1.2.2     skrll         NameString
   1266  1.1.1.1.2.2     skrll         ',' ByteConstExpr
   1267  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
   1268  1.1.1.1.2.2     skrll     | PARSEOP_MUTEX '('
   1269          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1270          1.1  christos     ;
   1271          1.1  christos 
   1272  1.1.1.1.2.2     skrll NameTerm
   1273  1.1.1.1.2.2     skrll     : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
   1274  1.1.1.1.2.2     skrll         NameString
   1275  1.1.1.1.2.2     skrll         ',' DataObject
   1276  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
   1277  1.1.1.1.2.2     skrll     | PARSEOP_NAME '('
   1278          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1279          1.1  christos     ;
   1280          1.1  christos 
   1281  1.1.1.1.2.2     skrll NAndTerm
   1282  1.1.1.1.2.2     skrll     : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
   1283          1.1  christos         TermArg
   1284          1.1  christos         TermArgItem
   1285          1.1  christos         Target
   1286  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1287  1.1.1.1.2.2     skrll     | PARSEOP_NAND '('
   1288          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1289          1.1  christos     ;
   1290          1.1  christos 
   1291  1.1.1.1.2.2     skrll NoOpTerm
   1292  1.1.1.1.2.2     skrll     : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
   1293          1.1  christos     ;
   1294          1.1  christos 
   1295  1.1.1.1.2.2     skrll NOrTerm
   1296  1.1.1.1.2.2     skrll     : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
   1297          1.1  christos         TermArg
   1298  1.1.1.1.2.2     skrll         TermArgItem
   1299          1.1  christos         Target
   1300  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1301  1.1.1.1.2.2     skrll     | PARSEOP_NOR '('
   1302          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1303          1.1  christos     ;
   1304          1.1  christos 
   1305  1.1.1.1.2.2     skrll NotifyTerm
   1306  1.1.1.1.2.2     skrll     : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
   1307          1.1  christos         SuperName
   1308          1.1  christos         TermArgItem
   1309  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1310  1.1.1.1.2.2     skrll     | PARSEOP_NOTIFY '('
   1311  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1312          1.1  christos     ;
   1313          1.1  christos 
   1314  1.1.1.1.2.2     skrll NotTerm
   1315  1.1.1.1.2.2     skrll     : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
   1316  1.1.1.1.2.2     skrll         TermArg
   1317  1.1.1.1.2.2     skrll         Target
   1318  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1319  1.1.1.1.2.2     skrll     | PARSEOP_NOT '('
   1320          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1321          1.1  christos     ;
   1322          1.1  christos 
   1323  1.1.1.1.2.2     skrll ObjectTypeTerm
   1324  1.1.1.1.2.2     skrll     : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
   1325  1.1.1.1.2.2     skrll         ObjectTypeName
   1326  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1327  1.1.1.1.2.2     skrll     | PARSEOP_OBJECTTYPE '('
   1328  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1329          1.1  christos     ;
   1330          1.1  christos 
   1331  1.1.1.1.2.2     skrll OffsetTerm
   1332  1.1.1.1.2.2     skrll     : PARSEOP_OFFSET '('
   1333  1.1.1.1.2.2     skrll         AmlPackageLengthTerm
   1334  1.1.1.1.2.2     skrll         ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
   1335  1.1.1.1.2.2     skrll     | PARSEOP_OFFSET '('
   1336  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1337          1.1  christos     ;
   1338          1.1  christos 
   1339  1.1.1.1.2.2     skrll OpRegionTerm
   1340  1.1.1.1.2.2     skrll     : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
   1341  1.1.1.1.2.2     skrll         NameString
   1342  1.1.1.1.2.2     skrll         ',' OpRegionSpaceIdTerm
   1343  1.1.1.1.2.2     skrll         TermArgItem
   1344  1.1.1.1.2.2     skrll         TermArgItem
   1345  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
   1346  1.1.1.1.2.2     skrll     | PARSEOP_OPERATIONREGION '('
   1347          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1348          1.1  christos     ;
   1349          1.1  christos 
   1350  1.1.1.1.2.2     skrll OpRegionSpaceIdTerm
   1351  1.1.1.1.2.2     skrll     : RegionSpaceKeyword            {}
   1352  1.1.1.1.2.2     skrll     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
   1353  1.1.1.1.2.2     skrll     ;
   1354  1.1.1.1.2.2     skrll 
   1355  1.1.1.1.2.2     skrll OrTerm
   1356  1.1.1.1.2.2     skrll     : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
   1357  1.1.1.1.2.2     skrll         TermArg
   1358  1.1.1.1.2.2     skrll         TermArgItem
   1359  1.1.1.1.2.2     skrll         Target
   1360  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1361  1.1.1.1.2.2     skrll     | PARSEOP_OR '('
   1362  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1363          1.1  christos     ;
   1364          1.1  christos 
   1365          1.1  christos PackageTerm
   1366          1.1  christos     : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
   1367          1.1  christos         VarPackageLengthTerm
   1368          1.1  christos         ')' '{'
   1369          1.1  christos             PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1370          1.1  christos     | PARSEOP_PACKAGE '('
   1371          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1372          1.1  christos     ;
   1373          1.1  christos 
   1374  1.1.1.1.2.2     skrll PowerResTerm
   1375  1.1.1.1.2.2     skrll     : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
   1376  1.1.1.1.2.2     skrll         NameString
   1377  1.1.1.1.2.2     skrll         ',' ByteConstExpr
   1378  1.1.1.1.2.2     skrll         ',' WordConstExpr
   1379  1.1.1.1.2.2     skrll         ')' '{'
   1380  1.1.1.1.2.3     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
   1381  1.1.1.1.2.2     skrll     | PARSEOP_POWERRESOURCE '('
   1382          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1383          1.1  christos     ;
   1384          1.1  christos 
   1385  1.1.1.1.2.2     skrll PrintfTerm
   1386  1.1.1.1.2.2     skrll     : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
   1387          1.1  christos         StringData
   1388  1.1.1.1.2.2     skrll         PrintfArgList
   1389  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1390  1.1.1.1.2.2     skrll     | PARSEOP_PRINTF '('
   1391          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1392          1.1  christos     ;
   1393          1.1  christos 
   1394  1.1.1.1.2.2     skrll PrintfArgList
   1395          1.1  christos     :                               {$$ = NULL;}
   1396  1.1.1.1.2.2     skrll     | TermArg                       {$$ = $1;}
   1397  1.1.1.1.2.2     skrll     | PrintfArgList ','
   1398  1.1.1.1.2.2     skrll        TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
   1399          1.1  christos     ;
   1400          1.1  christos 
   1401  1.1.1.1.2.2     skrll ProcessorTerm
   1402  1.1.1.1.2.2     skrll     : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
   1403  1.1.1.1.2.2     skrll         NameString
   1404  1.1.1.1.2.2     skrll         ',' ByteConstExpr
   1405  1.1.1.1.2.2     skrll         OptionalDWordConstExpr
   1406  1.1.1.1.2.2     skrll         OptionalByteConstExpr
   1407          1.1  christos         ')' '{'
   1408  1.1.1.1.2.3     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
   1409  1.1.1.1.2.2     skrll     | PARSEOP_PROCESSOR '('
   1410          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1411          1.1  christos     ;
   1412          1.1  christos 
   1413  1.1.1.1.2.2     skrll RawDataBufferTerm
   1414  1.1.1.1.2.2     skrll     : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
   1415  1.1.1.1.2.2     skrll         OptionalWordConst
   1416  1.1.1.1.2.2     skrll         ')' '{'
   1417  1.1.1.1.2.2     skrll             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1418  1.1.1.1.2.2     skrll     | PARSEOP_DATABUFFER '('
   1419          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1420          1.1  christos     ;
   1421          1.1  christos 
   1422  1.1.1.1.2.2     skrll /*
   1423  1.1.1.1.2.2     skrll  * In RefOf, the node isn't really a target, but we can't keep track of it after
   1424  1.1.1.1.2.2     skrll  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
   1425  1.1.1.1.2.2     skrll  */
   1426  1.1.1.1.2.2     skrll RefOfTerm
   1427  1.1.1.1.2.2     skrll     : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
   1428  1.1.1.1.2.2     skrll         SuperName
   1429  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
   1430  1.1.1.1.2.2     skrll     | PARSEOP_REFOF '('
   1431          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1432          1.1  christos     ;
   1433          1.1  christos 
   1434  1.1.1.1.2.2     skrll ReleaseTerm
   1435  1.1.1.1.2.2     skrll     : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
   1436  1.1.1.1.2.2     skrll         SuperName
   1437  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1438  1.1.1.1.2.2     skrll     | PARSEOP_RELEASE '('
   1439          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1440          1.1  christos     ;
   1441          1.1  christos 
   1442  1.1.1.1.2.2     skrll ResetTerm
   1443  1.1.1.1.2.2     skrll     : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
   1444  1.1.1.1.2.2     skrll         SuperName
   1445  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1446  1.1.1.1.2.2     skrll     | PARSEOP_RESET '('
   1447          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1448          1.1  christos     ;
   1449          1.1  christos 
   1450  1.1.1.1.2.2     skrll ReturnTerm
   1451  1.1.1.1.2.2     skrll     : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
   1452  1.1.1.1.2.2     skrll         OptionalReturnArg
   1453  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1454  1.1.1.1.2.2     skrll     | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
   1455  1.1.1.1.2.2     skrll     | PARSEOP_RETURN '('
   1456          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1457          1.1  christos     ;
   1458          1.1  christos 
   1459  1.1.1.1.2.2     skrll ScopeTerm
   1460  1.1.1.1.2.2     skrll     : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
   1461  1.1.1.1.2.2     skrll         NameString
   1462          1.1  christos         ')' '{'
   1463  1.1.1.1.2.3     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1464  1.1.1.1.2.2     skrll     | PARSEOP_SCOPE '('
   1465          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1466          1.1  christos     ;
   1467          1.1  christos 
   1468  1.1.1.1.2.2     skrll ShiftLeftTerm
   1469  1.1.1.1.2.2     skrll     : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
   1470  1.1.1.1.2.2     skrll         TermArg
   1471  1.1.1.1.2.2     skrll         TermArgItem
   1472  1.1.1.1.2.2     skrll         Target
   1473  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1474  1.1.1.1.2.2     skrll     | PARSEOP_SHIFTLEFT '('
   1475          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1476          1.1  christos     ;
   1477          1.1  christos 
   1478  1.1.1.1.2.2     skrll ShiftRightTerm
   1479  1.1.1.1.2.2     skrll     : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
   1480  1.1.1.1.2.2     skrll         TermArg
   1481  1.1.1.1.2.2     skrll         TermArgItem
   1482  1.1.1.1.2.2     skrll         Target
   1483  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1484  1.1.1.1.2.2     skrll     | PARSEOP_SHIFTRIGHT '('
   1485          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1486          1.1  christos     ;
   1487          1.1  christos 
   1488  1.1.1.1.2.2     skrll SignalTerm
   1489  1.1.1.1.2.2     skrll     : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
   1490  1.1.1.1.2.2     skrll         SuperName
   1491  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1492  1.1.1.1.2.2     skrll     | PARSEOP_SIGNAL '('
   1493          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1494          1.1  christos     ;
   1495          1.1  christos 
   1496  1.1.1.1.2.2     skrll SizeOfTerm
   1497  1.1.1.1.2.2     skrll     : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
   1498  1.1.1.1.2.2     skrll         SuperName
   1499  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1500  1.1.1.1.2.2     skrll     | PARSEOP_SIZEOF '('
   1501          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1502          1.1  christos     ;
   1503          1.1  christos 
   1504  1.1.1.1.2.2     skrll SleepTerm
   1505  1.1.1.1.2.2     skrll     : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
   1506  1.1.1.1.2.2     skrll         TermArg
   1507  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1508  1.1.1.1.2.2     skrll     | PARSEOP_SLEEP '('
   1509          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1510          1.1  christos     ;
   1511          1.1  christos 
   1512  1.1.1.1.2.2     skrll StallTerm
   1513  1.1.1.1.2.2     skrll     : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
   1514  1.1.1.1.2.2     skrll         TermArg
   1515  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1516  1.1.1.1.2.2     skrll     | PARSEOP_STALL '('
   1517          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1518          1.1  christos     ;
   1519          1.1  christos 
   1520  1.1.1.1.2.2     skrll StoreTerm
   1521  1.1.1.1.2.2     skrll     : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
   1522  1.1.1.1.2.2     skrll         TermArg
   1523  1.1.1.1.2.2     skrll         ',' SuperName
   1524  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
   1525  1.1.1.1.2.2     skrll     | PARSEOP_STORE '('
   1526          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1527          1.1  christos     ;
   1528          1.1  christos 
   1529  1.1.1.1.2.2     skrll SubtractTerm
   1530  1.1.1.1.2.2     skrll     : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
   1531  1.1.1.1.2.2     skrll         TermArg
   1532  1.1.1.1.2.2     skrll         TermArgItem
   1533  1.1.1.1.2.2     skrll         Target
   1534  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1535  1.1.1.1.2.2     skrll     | PARSEOP_SUBTRACT '('
   1536  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1537  1.1.1.1.2.2     skrll     ;
   1538  1.1.1.1.2.2     skrll SwitchTerm
   1539  1.1.1.1.2.2     skrll     : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
   1540  1.1.1.1.2.2     skrll         TermArg
   1541  1.1.1.1.2.2     skrll         ')' '{'
   1542  1.1.1.1.2.2     skrll             CaseDefaultTermList '}'
   1543  1.1.1.1.2.2     skrll                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1544  1.1.1.1.2.2     skrll     | PARSEOP_SWITCH '('
   1545          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1546          1.1  christos     ;
   1547          1.1  christos 
   1548  1.1.1.1.2.2     skrll ThermalZoneTerm
   1549  1.1.1.1.2.2     skrll     : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
   1550  1.1.1.1.2.2     skrll         NameString
   1551  1.1.1.1.2.2     skrll         ')' '{'
   1552  1.1.1.1.2.3     skrll             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1553  1.1.1.1.2.2     skrll     | PARSEOP_THERMALZONE '('
   1554          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1555          1.1  christos     ;
   1556          1.1  christos 
   1557  1.1.1.1.2.2     skrll TimerTerm
   1558  1.1.1.1.2.2     skrll     : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
   1559  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
   1560  1.1.1.1.2.2     skrll     | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
   1561  1.1.1.1.2.2     skrll     | PARSEOP_TIMER '('
   1562          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1563          1.1  christos     ;
   1564          1.1  christos 
   1565  1.1.1.1.2.2     skrll ToBCDTerm
   1566  1.1.1.1.2.2     skrll     : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
   1567  1.1.1.1.2.2     skrll         TermArg
   1568  1.1.1.1.2.2     skrll         Target
   1569  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1570  1.1.1.1.2.2     skrll     | PARSEOP_TOBCD '('
   1571          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1572          1.1  christos     ;
   1573          1.1  christos 
   1574  1.1.1.1.2.2     skrll ToBufferTerm
   1575  1.1.1.1.2.2     skrll     : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
   1576  1.1.1.1.2.2     skrll         TermArg
   1577  1.1.1.1.2.2     skrll         Target
   1578  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1579  1.1.1.1.2.2     skrll     | PARSEOP_TOBUFFER '('
   1580          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1581          1.1  christos     ;
   1582          1.1  christos 
   1583  1.1.1.1.2.2     skrll ToDecimalStringTerm
   1584  1.1.1.1.2.2     skrll     : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
   1585  1.1.1.1.2.2     skrll         TermArg
   1586  1.1.1.1.2.2     skrll         Target
   1587  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1588  1.1.1.1.2.2     skrll     | PARSEOP_TODECIMALSTRING '('
   1589          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1590          1.1  christos     ;
   1591          1.1  christos 
   1592  1.1.1.1.2.2     skrll ToHexStringTerm
   1593  1.1.1.1.2.2     skrll     : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
   1594  1.1.1.1.2.2     skrll         TermArg
   1595  1.1.1.1.2.2     skrll         Target
   1596  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1597  1.1.1.1.2.2     skrll     | PARSEOP_TOHEXSTRING '('
   1598          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1599          1.1  christos     ;
   1600          1.1  christos 
   1601  1.1.1.1.2.2     skrll ToIntegerTerm
   1602  1.1.1.1.2.2     skrll     : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
   1603  1.1.1.1.2.2     skrll         TermArg
   1604  1.1.1.1.2.2     skrll         Target
   1605  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1606  1.1.1.1.2.2     skrll     | PARSEOP_TOINTEGER '('
   1607          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1608          1.1  christos     ;
   1609          1.1  christos 
   1610  1.1.1.1.2.2     skrll ToPLDTerm
   1611  1.1.1.1.2.2     skrll     : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
   1612  1.1.1.1.2.2     skrll         PldKeywordList
   1613  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1614  1.1.1.1.2.2     skrll     | PARSEOP_TOPLD '('
   1615          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1616          1.1  christos     ;
   1617          1.1  christos 
   1618  1.1.1.1.2.2     skrll PldKeywordList
   1619  1.1.1.1.2.2     skrll     :                               {$$ = NULL;}
   1620  1.1.1.1.2.2     skrll     | PldKeyword
   1621  1.1.1.1.2.2     skrll         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
   1622  1.1.1.1.2.2     skrll     | PldKeyword
   1623  1.1.1.1.2.2     skrll         PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
   1624  1.1.1.1.2.2     skrll     | PldKeywordList ','            /* Allows a trailing comma at list end */
   1625  1.1.1.1.2.2     skrll     | PldKeywordList ','
   1626  1.1.1.1.2.2     skrll         PldKeyword
   1627  1.1.1.1.2.2     skrll         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1628  1.1.1.1.2.2     skrll     | PldKeywordList ','
   1629  1.1.1.1.2.2     skrll         PldKeyword
   1630  1.1.1.1.2.2     skrll         PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1631          1.1  christos     ;
   1632          1.1  christos 
   1633  1.1.1.1.2.2     skrll 
   1634  1.1.1.1.2.2     skrll ToStringTerm
   1635  1.1.1.1.2.2     skrll     : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
   1636  1.1.1.1.2.2     skrll         TermArg
   1637  1.1.1.1.2.2     skrll         OptionalCount
   1638  1.1.1.1.2.2     skrll         Target
   1639  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1640  1.1.1.1.2.2     skrll     | PARSEOP_TOSTRING '('
   1641          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1642          1.1  christos     ;
   1643          1.1  christos 
   1644  1.1.1.1.2.2     skrll ToUUIDTerm
   1645  1.1.1.1.2.2     skrll     : PARSEOP_TOUUID '('
   1646  1.1.1.1.2.2     skrll         StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
   1647  1.1.1.1.2.2     skrll     | PARSEOP_TOUUID '('
   1648          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1649          1.1  christos     ;
   1650          1.1  christos 
   1651  1.1.1.1.2.2     skrll UnicodeTerm
   1652  1.1.1.1.2.2     skrll     : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
   1653  1.1.1.1.2.2     skrll         StringData
   1654  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
   1655  1.1.1.1.2.2     skrll     | PARSEOP_UNICODE '('
   1656          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1657          1.1  christos     ;
   1658          1.1  christos 
   1659  1.1.1.1.2.2     skrll UnloadTerm
   1660  1.1.1.1.2.2     skrll     : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
   1661  1.1.1.1.2.2     skrll         SuperName
   1662  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1663  1.1.1.1.2.2     skrll     | PARSEOP_UNLOAD '('
   1664          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1665          1.1  christos     ;
   1666          1.1  christos 
   1667  1.1.1.1.2.2     skrll WaitTerm
   1668  1.1.1.1.2.2     skrll     : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
   1669  1.1.1.1.2.2     skrll         SuperName
   1670  1.1.1.1.2.2     skrll         TermArgItem
   1671  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1672  1.1.1.1.2.2     skrll     | PARSEOP_WAIT '('
   1673          1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1674          1.1  christos     ;
   1675          1.1  christos 
   1676  1.1.1.1.2.2     skrll XOrTerm
   1677  1.1.1.1.2.2     skrll     : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
   1678  1.1.1.1.2.2     skrll         TermArg
   1679  1.1.1.1.2.2     skrll         TermArgItem
   1680  1.1.1.1.2.2     skrll         Target
   1681  1.1.1.1.2.2     skrll         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1682  1.1.1.1.2.2     skrll     | PARSEOP_XOR '('
   1683  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1684          1.1  christos     ;
   1685          1.1  christos 
   1686  1.1.1.1.2.2     skrll WhileTerm
   1687  1.1.1.1.2.2     skrll     : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
   1688  1.1.1.1.2.2     skrll         TermArg
   1689  1.1.1.1.2.2     skrll         ')' '{' TermList '}'
   1690  1.1.1.1.2.2     skrll                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1691  1.1.1.1.2.2     skrll     | PARSEOP_WHILE '('
   1692  1.1.1.1.2.2     skrll         error ')'                   {$$ = AslDoError(); yyclearin;}
   1693          1.1  christos     ;
   1694          1.1  christos 
   1695          1.1  christos 
   1696  1.1.1.1.2.2     skrll /*******************************************************************************
   1697  1.1.1.1.2.2     skrll  *
   1698  1.1.1.1.2.2     skrll  * ASL Helper Terms
   1699  1.1.1.1.2.2     skrll  *
   1700  1.1.1.1.2.2     skrll  ******************************************************************************/
   1701          1.1  christos 
   1702          1.1  christos AmlPackageLengthTerm
   1703          1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
   1704          1.1  christos     ;
   1705          1.1  christos 
   1706          1.1  christos NameStringItem
   1707          1.1  christos     : ',' NameString                {$$ = $2;}
   1708          1.1  christos     | ',' error                     {$$ = AslDoError (); yyclearin;}
   1709          1.1  christos     ;
   1710          1.1  christos 
   1711          1.1  christos TermArgItem
   1712          1.1  christos     : ',' TermArg                   {$$ = $2;}
   1713          1.1  christos     | ',' error                     {$$ = AslDoError (); yyclearin;}
   1714          1.1  christos     ;
   1715          1.1  christos 
   1716          1.1  christos OptionalReference
   1717          1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
   1718          1.1  christos     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
   1719          1.1  christos     | ',' TermArg                   {$$ = $2;}
   1720          1.1  christos     ;
   1721          1.1  christos 
   1722          1.1  christos OptionalReturnArg
   1723          1.1  christos     :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
   1724          1.1  christos     | TermArg                       {$$ = $1;}
   1725          1.1  christos     ;
   1726          1.1  christos 
   1727          1.1  christos OptionalSerializeRuleKeyword
   1728          1.1  christos     :                               {$$ = NULL;}
   1729          1.1  christos     | ','                           {$$ = NULL;}
   1730          1.1  christos     | ',' SerializeRuleKeyword      {$$ = $2;}
   1731          1.1  christos     ;
   1732          1.1  christos 
   1733          1.1  christos OptionalTermArg
   1734  1.1.1.1.2.3     skrll     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
   1735  1.1.1.1.2.3     skrll     | TermArg                       {$$ = $1;}
   1736  1.1.1.1.2.3     skrll     ;
   1737  1.1.1.1.2.3     skrll 
   1738  1.1.1.1.2.3     skrll OptionalBufferLength
   1739          1.1  christos     :                               {$$ = NULL;}
   1740          1.1  christos     | TermArg                       {$$ = $1;}
   1741          1.1  christos     ;
   1742          1.1  christos 
   1743          1.1  christos OptionalWordConst
   1744          1.1  christos     :                               {$$ = NULL;}
   1745          1.1  christos     | WordConst                     {$$ = $1;}
   1746          1.1  christos     ;
   1747