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