Home | History | Annotate | Line # | Download | only in compiler
aslrules.y revision 1.1.1.4
      1      1.1  christos NoEcho('
      2      1.1  christos /******************************************************************************
      3      1.1  christos  *
      4  1.1.1.3  christos  * 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.3  christos  * 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.3  christos  * 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.3  christos  * 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.3  christos AslCode
     58  1.1.1.3  christos     : 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.4  christos  *
     78  1.1.1.4  christos  * 04/2016: The module-level code is now allowed in the following terms:
     79  1.1.1.4  christos  * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
     80  1.1.1.4  christos  * The ObjectList term is obsolete and has been removed.
     81      1.1  christos  */
     82      1.1  christos DefinitionBlockTerm
     83  1.1.1.3  christos     : 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.3  christos DefinitionBlockList
     95  1.1.1.3  christos     : DefinitionBlockTerm
     96  1.1.1.3  christos     | DefinitionBlockTerm
     97  1.1.1.3  christos         DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
     98  1.1.1.2  christos     ;
     99  1.1.1.2  christos 
    100  1.1.1.3  christos SuperName
    101  1.1.1.3  christos     : NameString                    {}
    102  1.1.1.3  christos     | ArgTerm                       {}
    103  1.1.1.3  christos     | LocalTerm                     {}
    104  1.1.1.3  christos     | DebugTerm                     {}
    105  1.1.1.3  christos     | Type6Opcode                   {}
    106  1.1.1.2  christos 
    107  1.1.1.3  christos Target
    108  1.1.1.3  christos     :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    109  1.1.1.3  christos     | ','                           {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    110  1.1.1.3  christos     | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    111      1.1  christos     ;
    112      1.1  christos 
    113  1.1.1.3  christos TermArg
    114  1.1.1.3  christos     : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    115  1.1.1.3  christos     | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    116  1.1.1.3  christos     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    117  1.1.1.3  christos     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    118  1.1.1.3  christos     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    119      1.1  christos     ;
    120      1.1  christos 
    121  1.1.1.3  christos /*
    122  1.1.1.3  christos  NOTE: Removed from TermArg due to reduce/reduce conflicts:
    123  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    124  1.1.1.3  christos     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    125  1.1.1.3  christos     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    126  1.1.1.3  christos     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    127      1.1  christos 
    128  1.1.1.3  christos */
    129      1.1  christos 
    130  1.1.1.3  christos MethodInvocationTerm
    131  1.1.1.3  christos     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
    132  1.1.1.3  christos         ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
    133      1.1  christos     ;
    134      1.1  christos 
    135  1.1.1.3  christos /* OptionalCount must appear before ByteList or an incorrect reduction will result */
    136      1.1  christos 
    137  1.1.1.3  christos OptionalCount
    138  1.1.1.3  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    139  1.1.1.3  christos     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    140  1.1.1.3  christos     | ',' TermArg                   {$$ = $2;}
    141      1.1  christos     ;
    142      1.1  christos 
    143  1.1.1.3  christos VarPackageLengthTerm
    144  1.1.1.3  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    145  1.1.1.3  christos     | TermArg                       {$$ = $1;}
    146      1.1  christos     ;
    147      1.1  christos 
    148      1.1  christos 
    149  1.1.1.3  christos /******* List Terms **************************************************/
    150      1.1  christos 
    151  1.1.1.3  christos ArgList
    152  1.1.1.3  christos     :                               {$$ = NULL;}
    153  1.1.1.3  christos     | TermArg
    154  1.1.1.3  christos     | ArgList ','                   /* Allows a trailing comma at list end */
    155  1.1.1.3  christos     | ArgList ','
    156  1.1.1.3  christos         TermArg                     {$$ = TrLinkPeerNode ($1,$3);}
    157      1.1  christos     ;
    158      1.1  christos 
    159  1.1.1.3  christos ByteList
    160  1.1.1.3  christos     :                               {$$ = NULL;}
    161  1.1.1.3  christos     | ByteConstExpr
    162  1.1.1.3  christos     | ByteList ','                  /* Allows a trailing comma at list end */
    163  1.1.1.3  christos     | ByteList ','
    164  1.1.1.3  christos         ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
    165      1.1  christos     ;
    166      1.1  christos 
    167  1.1.1.3  christos DWordList
    168  1.1.1.3  christos     :                               {$$ = NULL;}
    169  1.1.1.3  christos     | DWordConstExpr
    170  1.1.1.3  christos     | DWordList ','                 /* Allows a trailing comma at list end */
    171  1.1.1.3  christos     | DWordList ','
    172  1.1.1.3  christos         DWordConstExpr              {$$ = TrLinkPeerNode ($1,$3);}
    173      1.1  christos     ;
    174      1.1  christos 
    175  1.1.1.3  christos FieldUnitList
    176      1.1  christos     :                               {$$ = NULL;}
    177  1.1.1.3  christos     | FieldUnit
    178  1.1.1.3  christos     | FieldUnitList ','             /* Allows a trailing comma at list end */
    179  1.1.1.3  christos     | FieldUnitList ','
    180  1.1.1.3  christos         FieldUnit                   {$$ = TrLinkPeerNode ($1,$3);}
    181      1.1  christos     ;
    182      1.1  christos 
    183  1.1.1.3  christos FieldUnit
    184  1.1.1.3  christos     : FieldUnitEntry                {}
    185  1.1.1.3  christos     | OffsetTerm                    {}
    186  1.1.1.3  christos     | AccessAsTerm                  {}
    187  1.1.1.3  christos     | ConnectionTerm                {}
    188  1.1.1.3  christos     ;
    189      1.1  christos 
    190  1.1.1.3  christos FieldUnitEntry
    191  1.1.1.3  christos     : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
    192  1.1.1.3  christos     | NameSeg ','
    193  1.1.1.3  christos         AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
    194  1.1.1.3  christos     ;
    195      1.1  christos 
    196  1.1.1.3  christos Object
    197  1.1.1.3  christos     : CompilerDirective             {}
    198  1.1.1.3  christos     | NamedObject                   {}
    199  1.1.1.3  christos     | NameSpaceModifier             {}
    200      1.1  christos     ;
    201      1.1  christos 
    202  1.1.1.3  christos PackageList
    203  1.1.1.3  christos     :                               {$$ = NULL;}
    204  1.1.1.3  christos     | PackageElement
    205  1.1.1.3  christos     | PackageList ','               /* Allows a trailing comma at list end */
    206  1.1.1.3  christos     | PackageList ','
    207  1.1.1.3  christos         PackageElement              {$$ = TrLinkPeerNode ($1,$3);}
    208      1.1  christos     ;
    209      1.1  christos 
    210  1.1.1.3  christos PackageElement
    211  1.1.1.3  christos     : DataObject                    {}
    212  1.1.1.3  christos     | NameString                    {}
    213      1.1  christos     ;
    214      1.1  christos 
    215  1.1.1.3  christos     /* 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.3  christos     /* 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.3  christos     /* ACPI 3.0 -- allow semicolons between terms */
    255      1.1  christos 
    256  1.1.1.3  christos TermList
    257  1.1.1.3  christos     :                               {$$ = NULL;}
    258  1.1.1.3  christos     | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    259  1.1.1.3  christos     | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    260  1.1.1.3  christos     | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    261  1.1.1.3  christos     | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    262      1.1  christos     ;
    263      1.1  christos 
    264  1.1.1.3  christos Term
    265  1.1.1.3  christos     : Object                        {}
    266  1.1.1.3  christos     | Type1Opcode                   {}
    267  1.1.1.3  christos     | Type2Opcode                   {}
    268  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    269  1.1.1.3  christos     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    270  1.1.1.3  christos     | Type2BufferOpcode             {}
    271  1.1.1.3  christos     | Type2BufferOrStringOpcode     {}
    272  1.1.1.3  christos     | error                         {$$ = AslDoError(); yyclearin;}
    273      1.1  christos     ;
    274      1.1  christos 
    275      1.1  christos /*
    276  1.1.1.3  christos  * Case-Default list; allow only one Default term and unlimited Case terms
    277      1.1  christos  */
    278  1.1.1.3  christos CaseDefaultTermList
    279  1.1.1.3  christos     :                               {$$ = NULL;}
    280  1.1.1.3  christos     | CaseTerm  {}
    281  1.1.1.3  christos     | DefaultTerm   {}
    282  1.1.1.3  christos     | CaseDefaultTermList
    283  1.1.1.3  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    284  1.1.1.3  christos     | CaseDefaultTermList
    285  1.1.1.3  christos         DefaultTerm                 {$$ = TrLinkPeerNode ($1,$2);}
    286      1.1  christos 
    287  1.1.1.3  christos /* Original - attempts to force zero or one default term within the switch */
    288  1.1.1.3  christos 
    289  1.1.1.3  christos /*
    290  1.1.1.3  christos CaseDefaultTermList
    291  1.1.1.3  christos     :                               {$$ = NULL;}
    292  1.1.1.3  christos     | CaseTermList
    293  1.1.1.3  christos         DefaultTerm
    294  1.1.1.3  christos         CaseTermList                {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
    295  1.1.1.3  christos     | CaseTermList
    296  1.1.1.3  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    297  1.1.1.3  christos     ;
    298  1.1.1.3  christos 
    299  1.1.1.3  christos CaseTermList
    300  1.1.1.3  christos     :                               {$$ = NULL;}
    301  1.1.1.3  christos     | CaseTerm                      {}
    302  1.1.1.3  christos     | CaseTermList
    303  1.1.1.3  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
    304  1.1.1.3  christos     ;
    305  1.1.1.3  christos */
    306  1.1.1.3  christos 
    307  1.1.1.3  christos 
    308  1.1.1.3  christos /*******************************************************************************
    309  1.1.1.3  christos  *
    310  1.1.1.3  christos  * ASL Data and Constant Terms
    311  1.1.1.3  christos  *
    312  1.1.1.3  christos  ******************************************************************************/
    313  1.1.1.3  christos 
    314  1.1.1.3  christos DataObject
    315  1.1.1.3  christos     : BufferData                    {}
    316  1.1.1.3  christos     | PackageData                   {}
    317  1.1.1.3  christos     | IntegerData                   {}
    318  1.1.1.3  christos     | StringData                    {}
    319  1.1.1.3  christos     ;
    320  1.1.1.3  christos 
    321  1.1.1.3  christos BufferData
    322  1.1.1.3  christos     : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    323  1.1.1.3  christos     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    324  1.1.1.3  christos     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    325  1.1.1.3  christos     | BufferTerm                    {}
    326  1.1.1.3  christos     ;
    327  1.1.1.3  christos 
    328  1.1.1.3  christos PackageData
    329  1.1.1.3  christos     : PackageTerm                   {}
    330  1.1.1.3  christos     ;
    331  1.1.1.3  christos 
    332  1.1.1.3  christos IntegerData
    333  1.1.1.3  christos     : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    334  1.1.1.3  christos     | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    335  1.1.1.3  christos     | Integer                       {}
    336  1.1.1.3  christos     | ConstTerm                     {}
    337  1.1.1.3  christos     ;
    338  1.1.1.3  christos 
    339  1.1.1.3  christos StringData
    340  1.1.1.3  christos     : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    341  1.1.1.3  christos     | String                        {}
    342  1.1.1.3  christos     ;
    343  1.1.1.3  christos 
    344  1.1.1.3  christos ByteConst
    345  1.1.1.3  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
    346  1.1.1.3  christos     ;
    347  1.1.1.3  christos 
    348  1.1.1.3  christos WordConst
    349  1.1.1.3  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
    350  1.1.1.3  christos     ;
    351  1.1.1.3  christos 
    352  1.1.1.3  christos DWordConst
    353  1.1.1.3  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
    354  1.1.1.3  christos     ;
    355  1.1.1.3  christos 
    356  1.1.1.3  christos QWordConst
    357  1.1.1.3  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
    358  1.1.1.3  christos     ;
    359  1.1.1.3  christos 
    360  1.1.1.3  christos /*
    361  1.1.1.3  christos  * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
    362  1.1.1.3  christos  * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
    363  1.1.1.3  christos  * to simple integers. It is an error if these types of expressions cannot be
    364  1.1.1.3  christos  * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
    365  1.1.1.3  christos  * Note: The required byte length of the constant is passed through to the
    366  1.1.1.3  christos  * constant folding code in the node AmlLength field.
    367  1.1.1.3  christos  */
    368  1.1.1.3  christos ByteConstExpr
    369  1.1.1.3  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
    370  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
    371  1.1.1.3  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
    372  1.1.1.3  christos     | ByteConst                     {}
    373  1.1.1.3  christos     ;
    374  1.1.1.3  christos 
    375  1.1.1.3  christos WordConstExpr
    376  1.1.1.3  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
    377  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
    378  1.1.1.3  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
    379  1.1.1.3  christos     | WordConst                     {}
    380  1.1.1.3  christos     ;
    381  1.1.1.3  christos 
    382  1.1.1.3  christos DWordConstExpr
    383  1.1.1.3  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
    384  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
    385  1.1.1.3  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
    386  1.1.1.3  christos     | DWordConst                    {}
    387  1.1.1.3  christos     ;
    388  1.1.1.3  christos 
    389  1.1.1.3  christos QWordConstExpr
    390  1.1.1.3  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
    391  1.1.1.3  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
    392  1.1.1.3  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
    393  1.1.1.3  christos     | QWordConst                    {}
    394  1.1.1.3  christos     ;
    395  1.1.1.3  christos 
    396  1.1.1.3  christos ConstTerm
    397  1.1.1.3  christos     : ConstExprTerm                 {}
    398  1.1.1.3  christos     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
    399  1.1.1.3  christos     ;
    400  1.1.1.3  christos 
    401  1.1.1.3  christos ConstExprTerm
    402  1.1.1.3  christos     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
    403  1.1.1.3  christos     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
    404  1.1.1.3  christos     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
    405  1.1.1.3  christos     | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
    406  1.1.1.3  christos     | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
    407  1.1.1.3  christos     | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
    408  1.1.1.3  christos     | PARSEOP___PATH__              {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
    409  1.1.1.3  christos     ;
    410  1.1.1.3  christos 
    411  1.1.1.3  christos Integer
    412  1.1.1.3  christos     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
    413  1.1.1.3  christos     ;
    414  1.1.1.3  christos 
    415  1.1.1.3  christos String
    416  1.1.1.3  christos     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
    417  1.1.1.3  christos     ;
    418  1.1.1.3  christos 
    419  1.1.1.3  christos 
    420  1.1.1.3  christos /*******************************************************************************
    421  1.1.1.3  christos  *
    422  1.1.1.3  christos  * ASL Opcode Terms
    423  1.1.1.3  christos  *
    424  1.1.1.3  christos  ******************************************************************************/
    425  1.1.1.3  christos 
    426  1.1.1.3  christos CompilerDirective
    427  1.1.1.3  christos     : IncludeTerm                   {}
    428  1.1.1.3  christos     | IncludeEndTerm                {}
    429  1.1.1.3  christos     | ExternalTerm                  {}
    430  1.1.1.3  christos     ;
    431  1.1.1.3  christos 
    432  1.1.1.3  christos NamedObject
    433  1.1.1.3  christos     : BankFieldTerm                 {}
    434  1.1.1.3  christos     | CreateBitFieldTerm            {}
    435  1.1.1.3  christos     | CreateByteFieldTerm           {}
    436  1.1.1.3  christos     | CreateDWordFieldTerm          {}
    437  1.1.1.3  christos     | CreateFieldTerm               {}
    438  1.1.1.3  christos     | CreateQWordFieldTerm          {}
    439  1.1.1.3  christos     | CreateWordFieldTerm           {}
    440  1.1.1.3  christos     | DataRegionTerm                {}
    441  1.1.1.3  christos     | DeviceTerm                    {}
    442  1.1.1.3  christos     | EventTerm                     {}
    443  1.1.1.3  christos     | FieldTerm                     {}
    444  1.1.1.3  christos     | FunctionTerm                  {}
    445  1.1.1.3  christos     | IndexFieldTerm                {}
    446  1.1.1.3  christos     | MethodTerm                    {}
    447  1.1.1.3  christos     | MutexTerm                     {}
    448  1.1.1.3  christos     | OpRegionTerm                  {}
    449  1.1.1.3  christos     | PowerResTerm                  {}
    450  1.1.1.3  christos     | ProcessorTerm                 {}
    451  1.1.1.3  christos     | ThermalZoneTerm               {}
    452  1.1.1.3  christos     ;
    453  1.1.1.3  christos 
    454  1.1.1.3  christos NameSpaceModifier
    455  1.1.1.3  christos     : AliasTerm                     {}
    456  1.1.1.3  christos     | NameTerm                      {}
    457  1.1.1.3  christos     | ScopeTerm                     {}
    458  1.1.1.3  christos     ;
    459  1.1.1.3  christos 
    460  1.1.1.3  christos /* For ObjectType: SuperName except for MethodInvocationTerm */
    461  1.1.1.3  christos 
    462  1.1.1.3  christos ObjectTypeName
    463  1.1.1.3  christos     : NameString                    {}
    464  1.1.1.3  christos     | ArgTerm                       {}
    465  1.1.1.3  christos     | LocalTerm                     {}
    466  1.1.1.3  christos     | DebugTerm                     {}
    467  1.1.1.3  christos     | RefOfTerm                     {}
    468  1.1.1.3  christos     | DerefOfTerm                   {}
    469  1.1.1.3  christos     | IndexTerm                     {}
    470  1.1.1.3  christos /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
    471  1.1.1.3  christos     ;
    472  1.1.1.3  christos 
    473  1.1.1.3  christos RequiredTarget
    474  1.1.1.3  christos     : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    475  1.1.1.3  christos     ;
    476  1.1.1.3  christos 
    477  1.1.1.3  christos SimpleTarget
    478  1.1.1.3  christos     : NameString                    {}
    479  1.1.1.3  christos     | LocalTerm                     {}
    480  1.1.1.3  christos     | ArgTerm                       {}
    481  1.1.1.3  christos     ;
    482  1.1.1.3  christos 
    483  1.1.1.3  christos /* Opcode types */
    484  1.1.1.3  christos 
    485  1.1.1.3  christos Type1Opcode
    486  1.1.1.3  christos     : BreakTerm                     {}
    487  1.1.1.3  christos     | BreakPointTerm                {}
    488  1.1.1.3  christos     | ContinueTerm                  {}
    489  1.1.1.3  christos     | FatalTerm                     {}
    490  1.1.1.4  christos     | ForTerm                       {}
    491  1.1.1.3  christos     | ElseIfTerm                    {}
    492  1.1.1.3  christos     | LoadTerm                      {}
    493  1.1.1.3  christos     | NoOpTerm                      {}
    494  1.1.1.3  christos     | NotifyTerm                    {}
    495  1.1.1.3  christos     | ReleaseTerm                   {}
    496  1.1.1.3  christos     | ResetTerm                     {}
    497  1.1.1.3  christos     | ReturnTerm                    {}
    498  1.1.1.3  christos     | SignalTerm                    {}
    499  1.1.1.3  christos     | SleepTerm                     {}
    500  1.1.1.3  christos     | StallTerm                     {}
    501  1.1.1.3  christos     | SwitchTerm                    {}
    502  1.1.1.3  christos     | UnloadTerm                    {}
    503  1.1.1.3  christos     | WhileTerm                     {}
    504  1.1.1.3  christos     ;
    505  1.1.1.3  christos 
    506  1.1.1.3  christos Type2Opcode
    507  1.1.1.3  christos     : AcquireTerm                   {}
    508  1.1.1.3  christos     | CondRefOfTerm                 {}
    509  1.1.1.3  christos     | CopyObjectTerm                {}
    510  1.1.1.3  christos     | DerefOfTerm                   {}
    511  1.1.1.3  christos     | ObjectTypeTerm                {}
    512  1.1.1.3  christos     | RefOfTerm                     {}
    513  1.1.1.3  christos     | SizeOfTerm                    {}
    514  1.1.1.3  christos     | StoreTerm                     {}
    515  1.1.1.3  christos     | EqualsTerm                    {}
    516  1.1.1.3  christos     | TimerTerm                     {}
    517  1.1.1.3  christos     | WaitTerm                      {}
    518  1.1.1.3  christos     | MethodInvocationTerm          {}
    519  1.1.1.3  christos     ;
    520  1.1.1.3  christos 
    521  1.1.1.3  christos /*
    522  1.1.1.3  christos  * Type 3/4/5 opcodes
    523  1.1.1.3  christos  */
    524  1.1.1.3  christos Type2IntegerOpcode                  /* "Type3" opcodes */
    525  1.1.1.3  christos     : Expression                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    526  1.1.1.3  christos     | AddTerm                       {}
    527  1.1.1.3  christos     | 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.2  christos     : ConcatTerm                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    573  1.1.1.2  christos     | PrintfTerm                    {}
    574  1.1.1.2  christos     | 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.2  christos     | 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.3  christos     | IndexExpTerm                  {}
    607  1.1.1.2  christos     | MethodInvocationTerm          {}
    608      1.1  christos     ;
    609      1.1  christos 
    610      1.1  christos 
    611  1.1.1.3  christos /*******************************************************************************
    612  1.1.1.3  christos  *
    613  1.1.1.3  christos  * ASL Primary Terms
    614  1.1.1.3  christos  *
    615  1.1.1.3  christos  ******************************************************************************/
    616  1.1.1.3  christos 
    617  1.1.1.3  christos AccessAsTerm
    618  1.1.1.3  christos     : PARSEOP_ACCESSAS '('
    619  1.1.1.3  christos         AccessTypeKeyword
    620  1.1.1.3  christos         OptionalAccessAttribTerm
    621  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
    622  1.1.1.3  christos     | PARSEOP_ACCESSAS '('
    623  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    624      1.1  christos     ;
    625      1.1  christos 
    626  1.1.1.3  christos AcquireTerm
    627  1.1.1.3  christos     : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
    628  1.1.1.3  christos         SuperName
    629  1.1.1.3  christos         ',' WordConstExpr
    630  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
    631  1.1.1.3  christos     | PARSEOP_ACQUIRE '('
    632  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    633  1.1.1.3  christos     ;
    634  1.1.1.3  christos 
    635  1.1.1.3  christos AddTerm
    636  1.1.1.3  christos     : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
    637  1.1.1.3  christos         TermArg
    638  1.1.1.3  christos         TermArgItem
    639  1.1.1.3  christos         Target
    640  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    641  1.1.1.3  christos     | PARSEOP_ADD '('
    642      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    643      1.1  christos     ;
    644      1.1  christos 
    645  1.1.1.3  christos AliasTerm
    646  1.1.1.3  christos     : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
    647  1.1.1.3  christos         NameString
    648  1.1.1.3  christos         NameStringItem
    649  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
    650  1.1.1.3  christos                                         TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
    651  1.1.1.3  christos     | PARSEOP_ALIAS '('
    652  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    653  1.1.1.3  christos     ;
    654      1.1  christos 
    655  1.1.1.3  christos AndTerm
    656  1.1.1.3  christos     : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
    657  1.1.1.3  christos         TermArg
    658  1.1.1.3  christos         TermArgItem
    659  1.1.1.3  christos         Target
    660  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    661  1.1.1.3  christos     | PARSEOP_AND '('
    662  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    663  1.1.1.3  christos     ;
    664      1.1  christos 
    665  1.1.1.3  christos ArgTerm
    666  1.1.1.3  christos     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
    667  1.1.1.3  christos     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
    668  1.1.1.3  christos     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
    669  1.1.1.3  christos     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
    670  1.1.1.3  christos     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
    671  1.1.1.3  christos     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
    672  1.1.1.3  christos     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
    673  1.1.1.3  christos     ;
    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.3  christos BreakTerm
    690  1.1.1.3  christos     : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
    691      1.1  christos     ;
    692      1.1  christos 
    693  1.1.1.3  christos BreakPointTerm
    694  1.1.1.3  christos     : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
    695      1.1  christos     ;
    696      1.1  christos 
    697  1.1.1.3  christos BufferTerm
    698  1.1.1.3  christos     : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
    699  1.1.1.4  christos         OptionalBufferLength
    700  1.1.1.3  christos         ')' '{'
    701  1.1.1.3  christos             BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    702  1.1.1.3  christos     | PARSEOP_BUFFER '('
    703  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    704      1.1  christos     ;
    705      1.1  christos 
    706  1.1.1.3  christos BufferTermData
    707  1.1.1.3  christos     : ByteList                      {}
    708  1.1.1.3  christos     | StringData                    {}
    709  1.1.1.3  christos     ;
    710  1.1.1.3  christos 
    711  1.1.1.3  christos CaseTerm
    712  1.1.1.3  christos     : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
    713  1.1.1.3  christos         DataObject
    714  1.1.1.3  christos         ')' '{'
    715  1.1.1.3  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    716  1.1.1.3  christos     | PARSEOP_CASE '('
    717      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    718      1.1  christos     ;
    719      1.1  christos 
    720  1.1.1.3  christos ConcatTerm
    721  1.1.1.3  christos     : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
    722  1.1.1.3  christos         TermArg
    723  1.1.1.3  christos         TermArgItem
    724  1.1.1.3  christos         Target
    725  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    726  1.1.1.3  christos     | PARSEOP_CONCATENATE '('
    727  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    728  1.1.1.3  christos     ;
    729  1.1.1.3  christos 
    730  1.1.1.3  christos ConcatResTerm
    731  1.1.1.3  christos     : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
    732  1.1.1.3  christos         TermArg
    733  1.1.1.3  christos         TermArgItem
    734  1.1.1.3  christos         Target
    735  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
    736  1.1.1.3  christos     | 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.3  christos CondRefOfTerm
    756  1.1.1.3  christos     : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
    757  1.1.1.3  christos         SuperName
    758  1.1.1.3  christos         Target
    759  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    760  1.1.1.3  christos     | PARSEOP_CONDREFOF '('
    761  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    762  1.1.1.3  christos     ;
    763  1.1.1.3  christos 
    764  1.1.1.3  christos ContinueTerm
    765  1.1.1.3  christos     : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
    766  1.1.1.3  christos     ;
    767  1.1.1.3  christos 
    768  1.1.1.3  christos CopyObjectTerm
    769  1.1.1.3  christos     : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
    770  1.1.1.3  christos         TermArg
    771  1.1.1.3  christos         ',' SimpleTarget
    772  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
    773  1.1.1.3  christos     | PARSEOP_COPYOBJECT '('
    774  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    775  1.1.1.3  christos     ;
    776  1.1.1.3  christos 
    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.3  christos DebugTerm
    850  1.1.1.3  christos     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
    851  1.1.1.3  christos     ;
    852  1.1.1.3  christos 
    853  1.1.1.3  christos DecTerm
    854  1.1.1.3  christos     : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
    855  1.1.1.3  christos         SuperName
    856  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    857  1.1.1.3  christos     | PARSEOP_DECREMENT '('
    858  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    859  1.1.1.3  christos     ;
    860  1.1.1.3  christos 
    861  1.1.1.3  christos DefaultTerm
    862  1.1.1.3  christos     : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
    863  1.1.1.3  christos         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    864  1.1.1.3  christos     | PARSEOP_DEFAULT '{'
    865  1.1.1.3  christos         error '}'                   {$$ = AslDoError(); yyclearin;}
    866  1.1.1.3  christos     ;
    867  1.1.1.3  christos 
    868  1.1.1.3  christos DerefOfTerm
    869  1.1.1.3  christos     : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
    870  1.1.1.3  christos         TermArg
    871  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    872  1.1.1.3  christos     | PARSEOP_DEREFOF '('
    873  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    874  1.1.1.3  christos     ;
    875  1.1.1.3  christos 
    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.4  christos             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.3  christos DivideTerm
    886  1.1.1.3  christos     : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
    887  1.1.1.3  christos         TermArg
    888  1.1.1.3  christos         TermArgItem
    889  1.1.1.3  christos         Target
    890  1.1.1.3  christos         Target
    891  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
    892  1.1.1.3  christos     | PARSEOP_DIVIDE '('
    893  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    894  1.1.1.3  christos     ;
    895  1.1.1.3  christos 
    896  1.1.1.3  christos EISAIDTerm
    897  1.1.1.3  christos     : PARSEOP_EISAID '('
    898  1.1.1.3  christos         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
    899  1.1.1.3  christos     | PARSEOP_EISAID '('
    900  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    901  1.1.1.3  christos     ;
    902  1.1.1.3  christos 
    903  1.1.1.3  christos ElseIfTerm
    904  1.1.1.3  christos     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
    905  1.1.1.3  christos     ;
    906  1.1.1.3  christos 
    907  1.1.1.3  christos ElseTerm
    908  1.1.1.3  christos     :                               {$$ = NULL;}
    909  1.1.1.3  christos     | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    910  1.1.1.3  christos         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    911  1.1.1.3  christos 
    912  1.1.1.3  christos     | PARSEOP_ELSE '{'
    913  1.1.1.3  christos         error '}'                   {$$ = AslDoError(); yyclearin;}
    914  1.1.1.3  christos 
    915  1.1.1.3  christos     | PARSEOP_ELSE
    916  1.1.1.3  christos         error                       {$$ = AslDoError(); yyclearin;}
    917  1.1.1.3  christos 
    918  1.1.1.3  christos     | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    919  1.1.1.3  christos         TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    920  1.1.1.3  christos         ')' '{'
    921  1.1.1.3  christos             TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
    922  1.1.1.3  christos         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
    923  1.1.1.3  christos                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
    924  1.1.1.3  christos 
    925  1.1.1.3  christos     | PARSEOP_ELSEIF '('
    926  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    927  1.1.1.3  christos 
    928  1.1.1.3  christos     | PARSEOP_ELSEIF
    929  1.1.1.3  christos         error                       {$$ = AslDoError(); yyclearin;}
    930  1.1.1.3  christos     ;
    931  1.1.1.3  christos 
    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.3  christos ExternalTerm
    941  1.1.1.3  christos     : PARSEOP_EXTERNAL '('
    942  1.1.1.3  christos         NameString
    943  1.1.1.3  christos         OptionalObjectTypeKeyword
    944  1.1.1.3  christos         OptionalParameterTypePackage
    945  1.1.1.3  christos         OptionalParameterTypesPackage
    946  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
    947  1.1.1.3  christos     | PARSEOP_EXTERNAL '('
    948  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    949  1.1.1.3  christos     ;
    950  1.1.1.3  christos 
    951  1.1.1.3  christos FatalTerm
    952  1.1.1.3  christos     : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
    953  1.1.1.3  christos         ByteConstExpr
    954  1.1.1.3  christos         ',' DWordConstExpr
    955  1.1.1.3  christos         TermArgItem
    956  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    957  1.1.1.3  christos     | PARSEOP_FATAL '('
    958  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    959  1.1.1.3  christos     ;
    960  1.1.1.3  christos 
    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.3  christos FindSetLeftBitTerm
    974  1.1.1.3  christos     : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
    975  1.1.1.3  christos         TermArg
    976  1.1.1.3  christos         Target
    977  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    978  1.1.1.3  christos     | PARSEOP_FINDSETLEFTBIT '('
    979      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    980      1.1  christos     ;
    981      1.1  christos 
    982  1.1.1.3  christos FindSetRightBitTerm
    983  1.1.1.3  christos     : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
    984  1.1.1.3  christos         TermArg
    985  1.1.1.3  christos         Target
    986  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    987  1.1.1.3  christos     | PARSEOP_FINDSETRIGHTBIT '('
    988      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    989      1.1  christos     ;
    990      1.1  christos 
    991  1.1.1.4  christos     /* Convert a For() loop to a While() loop */
    992  1.1.1.4  christos ForTerm
    993  1.1.1.4  christos     : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
    994  1.1.1.4  christos         OptionalTermArg ','         {}
    995  1.1.1.4  christos         OptionalPredicate ','
    996  1.1.1.4  christos         OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
    997  1.1.1.4  christos                                         TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
    998  1.1.1.4  christos         ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
    999  1.1.1.4  christos                                     {$<n>$ = TrLinkPeerNode ($13,$9);
   1000  1.1.1.4  christos                                         $$ = $<n>10;}
   1001  1.1.1.4  christos     ;
   1002  1.1.1.4  christos 
   1003  1.1.1.4  christos OptionalPredicate
   1004  1.1.1.4  christos     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
   1005  1.1.1.4  christos     | TermArg                       {$$ = $1;}
   1006  1.1.1.4  christos     ;
   1007  1.1.1.4  christos 
   1008  1.1.1.3  christos FprintfTerm
   1009  1.1.1.3  christos     : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
   1010  1.1.1.3  christos         TermArg ','
   1011  1.1.1.3  christos         StringData
   1012  1.1.1.3  christos         PrintfArgList
   1013  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
   1014  1.1.1.3  christos     | PARSEOP_FPRINTF '('
   1015      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1016      1.1  christos     ;
   1017      1.1  christos 
   1018  1.1.1.3  christos FromBCDTerm
   1019  1.1.1.3  christos     : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
   1020  1.1.1.3  christos         TermArg
   1021  1.1.1.3  christos         Target
   1022  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1023  1.1.1.3  christos     | PARSEOP_FROMBCD '('
   1024      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1025      1.1  christos     ;
   1026      1.1  christos 
   1027  1.1.1.3  christos FunctionTerm
   1028  1.1.1.3  christos     : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
   1029      1.1  christos         NameString
   1030  1.1.1.3  christos         OptionalParameterTypePackage
   1031  1.1.1.3  christos         OptionalParameterTypesPackage
   1032      1.1  christos         ')' '{'
   1033  1.1.1.3  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
   1034  1.1.1.3  christos                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
   1035  1.1.1.3  christos                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
   1036  1.1.1.3  christos                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
   1037  1.1.1.3  christos     | PARSEOP_FUNCTION '('
   1038      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1039      1.1  christos     ;
   1040      1.1  christos 
   1041  1.1.1.3  christos IfTerm
   1042  1.1.1.3  christos     : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
   1043  1.1.1.3  christos         TermArg
   1044      1.1  christos         ')' '{'
   1045  1.1.1.3  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1046      1.1  christos 
   1047  1.1.1.3  christos     | PARSEOP_IF '('
   1048      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1049      1.1  christos     ;
   1050      1.1  christos 
   1051  1.1.1.3  christos IncludeTerm
   1052  1.1.1.3  christos     : PARSEOP_INCLUDE '('
   1053  1.1.1.3  christos         String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
   1054  1.1.1.3  christos                                         FlOpenIncludeFile ($3);}
   1055  1.1.1.3  christos     ;
   1056      1.1  christos 
   1057  1.1.1.3  christos IncludeEndTerm
   1058  1.1.1.3  christos     : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
   1059  1.1.1.3  christos     ;
   1060      1.1  christos 
   1061  1.1.1.3  christos IncTerm
   1062  1.1.1.3  christos     : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
   1063  1.1.1.3  christos         SuperName
   1064  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1065  1.1.1.3  christos     | PARSEOP_INCREMENT '('
   1066  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1067  1.1.1.3  christos     ;
   1068      1.1  christos 
   1069  1.1.1.3  christos IndexFieldTerm
   1070  1.1.1.3  christos     : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
   1071      1.1  christos         NameString
   1072      1.1  christos         NameStringItem
   1073  1.1.1.3  christos         ',' AccessTypeKeyword
   1074  1.1.1.3  christos         ',' LockRuleKeyword
   1075  1.1.1.3  christos         ',' UpdateRuleKeyword
   1076  1.1.1.3  christos         ')' '{'
   1077  1.1.1.3  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
   1078  1.1.1.3  christos     | PARSEOP_INDEXFIELD '('
   1079  1.1.1.3  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
   1080      1.1  christos     ;
   1081      1.1  christos 
   1082  1.1.1.3  christos IndexTerm
   1083  1.1.1.3  christos     : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
   1084  1.1.1.3  christos         TermArg
   1085  1.1.1.3  christos         TermArgItem
   1086  1.1.1.3  christos         Target
   1087  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1088  1.1.1.3  christos     | PARSEOP_INDEX '('
   1089      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1090      1.1  christos     ;
   1091      1.1  christos 
   1092  1.1.1.3  christos LAndTerm
   1093  1.1.1.3  christos     : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
   1094  1.1.1.3  christos         TermArg
   1095  1.1.1.3  christos         TermArgItem
   1096  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1097  1.1.1.3  christos     | PARSEOP_LAND '('
   1098      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1099      1.1  christos     ;
   1100      1.1  christos 
   1101  1.1.1.3  christos LEqualTerm
   1102  1.1.1.3  christos     : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1103  1.1.1.3  christos         TermArg
   1104  1.1.1.3  christos         TermArgItem
   1105  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1106  1.1.1.3  christos     | PARSEOP_LEQUAL '('
   1107  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1108      1.1  christos     ;
   1109      1.1  christos 
   1110  1.1.1.3  christos LGreaterEqualTerm
   1111  1.1.1.3  christos     : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1112  1.1.1.3  christos         TermArg
   1113  1.1.1.3  christos         TermArgItem
   1114  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1115  1.1.1.3  christos     | PARSEOP_LGREATEREQUAL '('
   1116  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1117      1.1  christos     ;
   1118      1.1  christos 
   1119  1.1.1.3  christos LGreaterTerm
   1120  1.1.1.3  christos     : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1121  1.1.1.3  christos         TermArg
   1122  1.1.1.3  christos         TermArgItem
   1123  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1124  1.1.1.3  christos     | PARSEOP_LGREATER '('
   1125  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1126      1.1  christos     ;
   1127      1.1  christos 
   1128  1.1.1.3  christos LLessEqualTerm
   1129  1.1.1.3  christos     : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1130  1.1.1.3  christos         TermArg
   1131      1.1  christos         TermArgItem
   1132  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1133  1.1.1.3  christos     | PARSEOP_LLESSEQUAL '('
   1134      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1135      1.1  christos     ;
   1136      1.1  christos 
   1137  1.1.1.3  christos LLessTerm
   1138  1.1.1.3  christos     : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1139  1.1.1.3  christos         TermArg
   1140  1.1.1.3  christos         TermArgItem
   1141  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1142  1.1.1.3  christos     | PARSEOP_LLESS '('
   1143  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1144      1.1  christos     ;
   1145      1.1  christos 
   1146  1.1.1.3  christos LNotEqualTerm
   1147  1.1.1.3  christos     : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1148      1.1  christos         TermArg
   1149  1.1.1.3  christos         TermArgItem
   1150  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1151  1.1.1.3  christos     | PARSEOP_LNOTEQUAL '('
   1152      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1153      1.1  christos     ;
   1154      1.1  christos 
   1155  1.1.1.3  christos LNotTerm
   1156  1.1.1.3  christos     : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
   1157  1.1.1.3  christos         TermArg
   1158  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1159  1.1.1.3  christos     | PARSEOP_LNOT '('
   1160      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1161  1.1.1.3  christos     ;
   1162      1.1  christos 
   1163  1.1.1.3  christos LoadTableTerm
   1164  1.1.1.3  christos     : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
   1165  1.1.1.3  christos         TermArg
   1166  1.1.1.3  christos         TermArgItem
   1167  1.1.1.3  christos         TermArgItem
   1168  1.1.1.3  christos         OptionalListString
   1169  1.1.1.3  christos         OptionalListString
   1170  1.1.1.3  christos         OptionalReference
   1171  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
   1172  1.1.1.3  christos     | PARSEOP_LOADTABLE '('
   1173  1.1.1.3  christos         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.3  christos LocalTerm
   1186  1.1.1.3  christos     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
   1187  1.1.1.3  christos     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
   1188  1.1.1.3  christos     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
   1189  1.1.1.3  christos     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
   1190  1.1.1.3  christos     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
   1191  1.1.1.3  christos     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
   1192  1.1.1.3  christos     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
   1193  1.1.1.3  christos     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
   1194      1.1  christos     ;
   1195      1.1  christos 
   1196  1.1.1.3  christos LOrTerm
   1197  1.1.1.3  christos     : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
   1198  1.1.1.3  christos         TermArg
   1199      1.1  christos         TermArgItem
   1200      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1201  1.1.1.3  christos     | PARSEOP_LOR '('
   1202      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1203      1.1  christos     ;
   1204      1.1  christos 
   1205  1.1.1.3  christos MatchTerm
   1206  1.1.1.3  christos     : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
   1207      1.1  christos         TermArg
   1208  1.1.1.3  christos         ',' MatchOpKeyword
   1209  1.1.1.3  christos         TermArgItem
   1210  1.1.1.3  christos         ',' MatchOpKeyword
   1211  1.1.1.3  christos         TermArgItem
   1212  1.1.1.3  christos         TermArgItem
   1213  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
   1214  1.1.1.3  christos     | PARSEOP_MATCH '('
   1215      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1216      1.1  christos     ;
   1217      1.1  christos 
   1218  1.1.1.3  christos MethodTerm
   1219  1.1.1.3  christos     : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
   1220  1.1.1.3  christos         NameString
   1221  1.1.1.3  christos         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
   1222  1.1.1.3  christos         OptionalSerializeRuleKeyword
   1223  1.1.1.3  christos         OptionalByteConstExpr
   1224  1.1.1.3  christos         OptionalParameterTypePackage
   1225  1.1.1.3  christos         OptionalParameterTypesPackage
   1226      1.1  christos         ')' '{'
   1227  1.1.1.3  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
   1228  1.1.1.3  christos     | PARSEOP_METHOD '('
   1229      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1230      1.1  christos     ;
   1231      1.1  christos 
   1232  1.1.1.3  christos MidTerm
   1233  1.1.1.3  christos     : 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.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
   1239  1.1.1.3  christos     | PARSEOP_MID '('
   1240      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1241      1.1  christos     ;
   1242      1.1  christos 
   1243  1.1.1.3  christos ModTerm
   1244  1.1.1.3  christos     : 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.3  christos     | PARSEOP_MOD '('
   1250      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1251      1.1  christos     ;
   1252      1.1  christos 
   1253  1.1.1.3  christos MultiplyTerm
   1254  1.1.1.3  christos     : 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.3  christos     | PARSEOP_MULTIPLY '('
   1260      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1261      1.1  christos     ;
   1262      1.1  christos 
   1263  1.1.1.3  christos MutexTerm
   1264  1.1.1.3  christos     : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
   1265  1.1.1.3  christos         NameString
   1266  1.1.1.3  christos         ',' ByteConstExpr
   1267  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
   1268  1.1.1.3  christos     | PARSEOP_MUTEX '('
   1269      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1270      1.1  christos     ;
   1271      1.1  christos 
   1272  1.1.1.3  christos NameTerm
   1273  1.1.1.3  christos     : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
   1274  1.1.1.3  christos         NameString
   1275  1.1.1.3  christos         ',' DataObject
   1276  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
   1277  1.1.1.3  christos     | PARSEOP_NAME '('
   1278      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1279      1.1  christos     ;
   1280      1.1  christos 
   1281  1.1.1.3  christos NAndTerm
   1282  1.1.1.3  christos     : 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.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1287  1.1.1.3  christos     | PARSEOP_NAND '('
   1288      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1289      1.1  christos     ;
   1290      1.1  christos 
   1291  1.1.1.3  christos NoOpTerm
   1292  1.1.1.3  christos     : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
   1293      1.1  christos     ;
   1294      1.1  christos 
   1295  1.1.1.3  christos NOrTerm
   1296  1.1.1.3  christos     : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
   1297      1.1  christos         TermArg
   1298  1.1.1.3  christos         TermArgItem
   1299      1.1  christos         Target
   1300  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1301  1.1.1.3  christos     | PARSEOP_NOR '('
   1302      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1303      1.1  christos     ;
   1304      1.1  christos 
   1305  1.1.1.3  christos NotifyTerm
   1306  1.1.1.3  christos     : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
   1307      1.1  christos         SuperName
   1308      1.1  christos         TermArgItem
   1309  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1310  1.1.1.3  christos     | PARSEOP_NOTIFY '('
   1311  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1312      1.1  christos     ;
   1313      1.1  christos 
   1314  1.1.1.3  christos NotTerm
   1315  1.1.1.3  christos     : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
   1316  1.1.1.3  christos         TermArg
   1317  1.1.1.3  christos         Target
   1318  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1319  1.1.1.3  christos     | PARSEOP_NOT '('
   1320      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1321      1.1  christos     ;
   1322      1.1  christos 
   1323  1.1.1.3  christos ObjectTypeTerm
   1324  1.1.1.3  christos     : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
   1325  1.1.1.3  christos         ObjectTypeName
   1326  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1327  1.1.1.3  christos     | PARSEOP_OBJECTTYPE '('
   1328  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1329      1.1  christos     ;
   1330      1.1  christos 
   1331  1.1.1.3  christos OffsetTerm
   1332  1.1.1.3  christos     : PARSEOP_OFFSET '('
   1333  1.1.1.3  christos         AmlPackageLengthTerm
   1334  1.1.1.3  christos         ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
   1335  1.1.1.3  christos     | PARSEOP_OFFSET '('
   1336  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1337      1.1  christos     ;
   1338      1.1  christos 
   1339  1.1.1.3  christos OpRegionTerm
   1340  1.1.1.3  christos     : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
   1341  1.1.1.3  christos         NameString
   1342  1.1.1.3  christos         ',' OpRegionSpaceIdTerm
   1343  1.1.1.3  christos         TermArgItem
   1344  1.1.1.3  christos         TermArgItem
   1345  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
   1346  1.1.1.3  christos     | PARSEOP_OPERATIONREGION '('
   1347      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1348      1.1  christos     ;
   1349      1.1  christos 
   1350  1.1.1.3  christos OpRegionSpaceIdTerm
   1351  1.1.1.3  christos     : RegionSpaceKeyword            {}
   1352  1.1.1.3  christos     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
   1353  1.1.1.3  christos     ;
   1354  1.1.1.3  christos 
   1355  1.1.1.3  christos OrTerm
   1356  1.1.1.3  christos     : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
   1357  1.1.1.3  christos         TermArg
   1358  1.1.1.3  christos         TermArgItem
   1359  1.1.1.3  christos         Target
   1360  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1361  1.1.1.3  christos     | PARSEOP_OR '('
   1362  1.1.1.3  christos         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.3  christos PowerResTerm
   1375  1.1.1.3  christos     : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
   1376  1.1.1.3  christos         NameString
   1377  1.1.1.3  christos         ',' ByteConstExpr
   1378  1.1.1.3  christos         ',' WordConstExpr
   1379  1.1.1.3  christos         ')' '{'
   1380  1.1.1.4  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
   1381  1.1.1.3  christos     | PARSEOP_POWERRESOURCE '('
   1382      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1383      1.1  christos     ;
   1384      1.1  christos 
   1385  1.1.1.3  christos PrintfTerm
   1386  1.1.1.3  christos     : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
   1387      1.1  christos         StringData
   1388  1.1.1.3  christos         PrintfArgList
   1389  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1390  1.1.1.3  christos     | PARSEOP_PRINTF '('
   1391      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1392      1.1  christos     ;
   1393      1.1  christos 
   1394  1.1.1.3  christos PrintfArgList
   1395      1.1  christos     :                               {$$ = NULL;}
   1396  1.1.1.3  christos     | TermArg                       {$$ = $1;}
   1397  1.1.1.3  christos     | PrintfArgList ','
   1398  1.1.1.3  christos        TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
   1399      1.1  christos     ;
   1400      1.1  christos 
   1401  1.1.1.3  christos ProcessorTerm
   1402  1.1.1.3  christos     : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
   1403  1.1.1.3  christos         NameString
   1404  1.1.1.3  christos         ',' ByteConstExpr
   1405  1.1.1.3  christos         OptionalDWordConstExpr
   1406  1.1.1.3  christos         OptionalByteConstExpr
   1407      1.1  christos         ')' '{'
   1408  1.1.1.4  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
   1409  1.1.1.3  christos     | PARSEOP_PROCESSOR '('
   1410      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1411      1.1  christos     ;
   1412      1.1  christos 
   1413  1.1.1.3  christos RawDataBufferTerm
   1414  1.1.1.3  christos     : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
   1415  1.1.1.3  christos         OptionalWordConst
   1416  1.1.1.3  christos         ')' '{'
   1417  1.1.1.3  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1418  1.1.1.3  christos     | PARSEOP_DATABUFFER '('
   1419      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1420      1.1  christos     ;
   1421      1.1  christos 
   1422  1.1.1.3  christos /*
   1423  1.1.1.3  christos  * In RefOf, the node isn't really a target, but we can't keep track of it after
   1424  1.1.1.3  christos  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
   1425  1.1.1.3  christos  */
   1426  1.1.1.3  christos RefOfTerm
   1427  1.1.1.3  christos     : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
   1428  1.1.1.3  christos         SuperName
   1429  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
   1430  1.1.1.3  christos     | PARSEOP_REFOF '('
   1431      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1432      1.1  christos     ;
   1433      1.1  christos 
   1434  1.1.1.3  christos ReleaseTerm
   1435  1.1.1.3  christos     : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
   1436  1.1.1.3  christos         SuperName
   1437  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1438  1.1.1.3  christos     | PARSEOP_RELEASE '('
   1439      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1440      1.1  christos     ;
   1441      1.1  christos 
   1442  1.1.1.3  christos ResetTerm
   1443  1.1.1.3  christos     : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
   1444  1.1.1.3  christos         SuperName
   1445  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1446  1.1.1.3  christos     | PARSEOP_RESET '('
   1447      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1448      1.1  christos     ;
   1449      1.1  christos 
   1450  1.1.1.3  christos ReturnTerm
   1451  1.1.1.3  christos     : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
   1452  1.1.1.3  christos         OptionalReturnArg
   1453  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1454  1.1.1.3  christos     | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
   1455  1.1.1.3  christos     | PARSEOP_RETURN '('
   1456      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1457      1.1  christos     ;
   1458      1.1  christos 
   1459  1.1.1.3  christos ScopeTerm
   1460  1.1.1.3  christos     : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
   1461  1.1.1.3  christos         NameString
   1462      1.1  christos         ')' '{'
   1463  1.1.1.4  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1464  1.1.1.3  christos     | PARSEOP_SCOPE '('
   1465      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1466      1.1  christos     ;
   1467      1.1  christos 
   1468  1.1.1.3  christos ShiftLeftTerm
   1469  1.1.1.3  christos     : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
   1470  1.1.1.3  christos         TermArg
   1471  1.1.1.3  christos         TermArgItem
   1472  1.1.1.3  christos         Target
   1473  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1474  1.1.1.3  christos     | PARSEOP_SHIFTLEFT '('
   1475      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1476      1.1  christos     ;
   1477      1.1  christos 
   1478  1.1.1.3  christos ShiftRightTerm
   1479  1.1.1.3  christos     : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
   1480  1.1.1.3  christos         TermArg
   1481  1.1.1.3  christos         TermArgItem
   1482  1.1.1.3  christos         Target
   1483  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1484  1.1.1.3  christos     | PARSEOP_SHIFTRIGHT '('
   1485      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1486      1.1  christos     ;
   1487      1.1  christos 
   1488  1.1.1.3  christos SignalTerm
   1489  1.1.1.3  christos     : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
   1490  1.1.1.3  christos         SuperName
   1491  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1492  1.1.1.3  christos     | PARSEOP_SIGNAL '('
   1493      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1494      1.1  christos     ;
   1495      1.1  christos 
   1496  1.1.1.3  christos SizeOfTerm
   1497  1.1.1.3  christos     : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
   1498  1.1.1.3  christos         SuperName
   1499  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1500  1.1.1.3  christos     | PARSEOP_SIZEOF '('
   1501      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1502      1.1  christos     ;
   1503      1.1  christos 
   1504  1.1.1.3  christos SleepTerm
   1505  1.1.1.3  christos     : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
   1506  1.1.1.3  christos         TermArg
   1507  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1508  1.1.1.3  christos     | PARSEOP_SLEEP '('
   1509      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1510      1.1  christos     ;
   1511      1.1  christos 
   1512  1.1.1.3  christos StallTerm
   1513  1.1.1.3  christos     : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
   1514  1.1.1.3  christos         TermArg
   1515  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1516  1.1.1.3  christos     | PARSEOP_STALL '('
   1517      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1518      1.1  christos     ;
   1519      1.1  christos 
   1520  1.1.1.3  christos StoreTerm
   1521  1.1.1.3  christos     : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
   1522  1.1.1.3  christos         TermArg
   1523  1.1.1.3  christos         ',' SuperName
   1524  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
   1525  1.1.1.3  christos     | PARSEOP_STORE '('
   1526      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1527      1.1  christos     ;
   1528      1.1  christos 
   1529  1.1.1.3  christos SubtractTerm
   1530  1.1.1.3  christos     : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
   1531  1.1.1.3  christos         TermArg
   1532  1.1.1.3  christos         TermArgItem
   1533  1.1.1.3  christos         Target
   1534  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1535  1.1.1.3  christos     | PARSEOP_SUBTRACT '('
   1536  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1537  1.1.1.3  christos     ;
   1538  1.1.1.3  christos SwitchTerm
   1539  1.1.1.3  christos     : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
   1540  1.1.1.3  christos         TermArg
   1541  1.1.1.3  christos         ')' '{'
   1542  1.1.1.3  christos             CaseDefaultTermList '}'
   1543  1.1.1.3  christos                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1544  1.1.1.3  christos     | PARSEOP_SWITCH '('
   1545      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1546      1.1  christos     ;
   1547      1.1  christos 
   1548  1.1.1.3  christos ThermalZoneTerm
   1549  1.1.1.3  christos     : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
   1550  1.1.1.3  christos         NameString
   1551  1.1.1.3  christos         ')' '{'
   1552  1.1.1.4  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
   1553  1.1.1.3  christos     | PARSEOP_THERMALZONE '('
   1554      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1555      1.1  christos     ;
   1556      1.1  christos 
   1557  1.1.1.3  christos TimerTerm
   1558  1.1.1.3  christos     : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
   1559  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
   1560  1.1.1.3  christos     | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
   1561  1.1.1.3  christos     | PARSEOP_TIMER '('
   1562      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1563      1.1  christos     ;
   1564      1.1  christos 
   1565  1.1.1.3  christos ToBCDTerm
   1566  1.1.1.3  christos     : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
   1567  1.1.1.3  christos         TermArg
   1568  1.1.1.3  christos         Target
   1569  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1570  1.1.1.3  christos     | PARSEOP_TOBCD '('
   1571      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1572      1.1  christos     ;
   1573      1.1  christos 
   1574  1.1.1.3  christos ToBufferTerm
   1575  1.1.1.3  christos     : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
   1576  1.1.1.3  christos         TermArg
   1577  1.1.1.3  christos         Target
   1578  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1579  1.1.1.3  christos     | PARSEOP_TOBUFFER '('
   1580      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1581      1.1  christos     ;
   1582      1.1  christos 
   1583  1.1.1.3  christos ToDecimalStringTerm
   1584  1.1.1.3  christos     : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
   1585  1.1.1.3  christos         TermArg
   1586  1.1.1.3  christos         Target
   1587  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1588  1.1.1.3  christos     | PARSEOP_TODECIMALSTRING '('
   1589      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1590      1.1  christos     ;
   1591      1.1  christos 
   1592  1.1.1.3  christos ToHexStringTerm
   1593  1.1.1.3  christos     : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
   1594  1.1.1.3  christos         TermArg
   1595  1.1.1.3  christos         Target
   1596  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1597  1.1.1.3  christos     | PARSEOP_TOHEXSTRING '('
   1598      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1599      1.1  christos     ;
   1600      1.1  christos 
   1601  1.1.1.3  christos ToIntegerTerm
   1602  1.1.1.3  christos     : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
   1603  1.1.1.3  christos         TermArg
   1604  1.1.1.3  christos         Target
   1605  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1606  1.1.1.3  christos     | PARSEOP_TOINTEGER '('
   1607      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1608      1.1  christos     ;
   1609      1.1  christos 
   1610  1.1.1.3  christos ToPLDTerm
   1611  1.1.1.3  christos     : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
   1612  1.1.1.3  christos         PldKeywordList
   1613  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1614  1.1.1.3  christos     | PARSEOP_TOPLD '('
   1615      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1616      1.1  christos     ;
   1617      1.1  christos 
   1618  1.1.1.3  christos PldKeywordList
   1619  1.1.1.3  christos     :                               {$$ = NULL;}
   1620  1.1.1.3  christos     | PldKeyword
   1621  1.1.1.3  christos         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
   1622  1.1.1.3  christos     | PldKeyword
   1623  1.1.1.3  christos         PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
   1624  1.1.1.3  christos     | PldKeywordList ','            /* Allows a trailing comma at list end */
   1625  1.1.1.3  christos     | PldKeywordList ','
   1626  1.1.1.3  christos         PldKeyword
   1627  1.1.1.3  christos         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1628  1.1.1.3  christos     | PldKeywordList ','
   1629  1.1.1.3  christos         PldKeyword
   1630  1.1.1.3  christos         PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1631      1.1  christos     ;
   1632      1.1  christos 
   1633  1.1.1.3  christos 
   1634  1.1.1.3  christos ToStringTerm
   1635  1.1.1.3  christos     : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
   1636  1.1.1.3  christos         TermArg
   1637  1.1.1.3  christos         OptionalCount
   1638  1.1.1.3  christos         Target
   1639  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1640  1.1.1.3  christos     | PARSEOP_TOSTRING '('
   1641      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1642      1.1  christos     ;
   1643      1.1  christos 
   1644  1.1.1.3  christos ToUUIDTerm
   1645  1.1.1.3  christos     : PARSEOP_TOUUID '('
   1646  1.1.1.3  christos         StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
   1647  1.1.1.3  christos     | PARSEOP_TOUUID '('
   1648      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1649      1.1  christos     ;
   1650      1.1  christos 
   1651  1.1.1.3  christos UnicodeTerm
   1652  1.1.1.3  christos     : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
   1653  1.1.1.3  christos         StringData
   1654  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
   1655  1.1.1.3  christos     | PARSEOP_UNICODE '('
   1656      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1657      1.1  christos     ;
   1658      1.1  christos 
   1659  1.1.1.3  christos UnloadTerm
   1660  1.1.1.3  christos     : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
   1661  1.1.1.3  christos         SuperName
   1662  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1663  1.1.1.3  christos     | PARSEOP_UNLOAD '('
   1664      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1665      1.1  christos     ;
   1666      1.1  christos 
   1667  1.1.1.3  christos WaitTerm
   1668  1.1.1.3  christos     : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
   1669  1.1.1.3  christos         SuperName
   1670  1.1.1.3  christos         TermArgItem
   1671  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1672  1.1.1.3  christos     | PARSEOP_WAIT '('
   1673      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1674      1.1  christos     ;
   1675      1.1  christos 
   1676  1.1.1.3  christos XOrTerm
   1677  1.1.1.3  christos     : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
   1678  1.1.1.3  christos         TermArg
   1679  1.1.1.3  christos         TermArgItem
   1680  1.1.1.3  christos         Target
   1681  1.1.1.3  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1682  1.1.1.3  christos     | PARSEOP_XOR '('
   1683  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1684      1.1  christos     ;
   1685      1.1  christos 
   1686  1.1.1.3  christos WhileTerm
   1687  1.1.1.3  christos     : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
   1688  1.1.1.3  christos         TermArg
   1689  1.1.1.3  christos         ')' '{' TermList '}'
   1690  1.1.1.3  christos                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1691  1.1.1.3  christos     | PARSEOP_WHILE '('
   1692  1.1.1.3  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1693      1.1  christos     ;
   1694      1.1  christos 
   1695      1.1  christos 
   1696  1.1.1.3  christos /*******************************************************************************
   1697  1.1.1.3  christos  *
   1698  1.1.1.3  christos  * ASL Helper Terms
   1699  1.1.1.3  christos  *
   1700  1.1.1.3  christos  ******************************************************************************/
   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.4  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
   1735  1.1.1.4  christos     | TermArg                       {$$ = $1;}
   1736  1.1.1.4  christos     ;
   1737  1.1.1.4  christos 
   1738  1.1.1.4  christos 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