Home | History | Annotate | Line # | Download | only in compiler
aslrules.y revision 1.1.1.8.2.2
      1  1.1.1.8.2.2  jdolecek NoEcho('
      2  1.1.1.8.2.2  jdolecek /******************************************************************************
      3  1.1.1.8.2.2  jdolecek  *
      4  1.1.1.8.2.2  jdolecek  * Module Name: aslrules.y - Main Bison/Yacc production rules
      5  1.1.1.8.2.2  jdolecek  *                         - Keep this file synched with the
      6  1.1.1.8.2.2  jdolecek  *                           CvParseOpBlockType function in cvcompiler.c
      7  1.1.1.8.2.2  jdolecek  *
      8  1.1.1.8.2.2  jdolecek  *****************************************************************************/
      9  1.1.1.8.2.2  jdolecek 
     10  1.1.1.8.2.2  jdolecek /*
     11  1.1.1.8.2.2  jdolecek  * Copyright (C) 2000 - 2017, Intel Corp.
     12  1.1.1.8.2.2  jdolecek  * All rights reserved.
     13  1.1.1.8.2.2  jdolecek  *
     14  1.1.1.8.2.2  jdolecek  * Redistribution and use in source and binary forms, with or without
     15  1.1.1.8.2.2  jdolecek  * modification, are permitted provided that the following conditions
     16  1.1.1.8.2.2  jdolecek  * are met:
     17  1.1.1.8.2.2  jdolecek  * 1. Redistributions of source code must retain the above copyright
     18  1.1.1.8.2.2  jdolecek  *    notice, this list of conditions, and the following disclaimer,
     19  1.1.1.8.2.2  jdolecek  *    without modification.
     20  1.1.1.8.2.2  jdolecek  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     21  1.1.1.8.2.2  jdolecek  *    substantially similar to the "NO WARRANTY" disclaimer below
     22  1.1.1.8.2.2  jdolecek  *    ("Disclaimer") and any redistribution must be conditioned upon
     23  1.1.1.8.2.2  jdolecek  *    including a substantially similar Disclaimer requirement for further
     24  1.1.1.8.2.2  jdolecek  *    binary redistribution.
     25  1.1.1.8.2.2  jdolecek  * 3. Neither the names of the above-listed copyright holders nor the names
     26  1.1.1.8.2.2  jdolecek  *    of any contributors may be used to endorse or promote products derived
     27  1.1.1.8.2.2  jdolecek  *    from this software without specific prior written permission.
     28  1.1.1.8.2.2  jdolecek  *
     29  1.1.1.8.2.2  jdolecek  * Alternatively, this software may be distributed under the terms of the
     30  1.1.1.8.2.2  jdolecek  * GNU General Public License ("GPL") version 2 as published by the Free
     31  1.1.1.8.2.2  jdolecek  * Software Foundation.
     32  1.1.1.8.2.2  jdolecek  *
     33  1.1.1.8.2.2  jdolecek  * NO WARRANTY
     34  1.1.1.8.2.2  jdolecek  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     35  1.1.1.8.2.2  jdolecek  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     36  1.1.1.8.2.2  jdolecek  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     37  1.1.1.8.2.2  jdolecek  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     38  1.1.1.8.2.2  jdolecek  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     39  1.1.1.8.2.2  jdolecek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     40  1.1.1.8.2.2  jdolecek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     41  1.1.1.8.2.2  jdolecek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     42  1.1.1.8.2.2  jdolecek  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     43  1.1.1.8.2.2  jdolecek  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     44  1.1.1.8.2.2  jdolecek  * POSSIBILITY OF SUCH DAMAGES.
     45  1.1.1.8.2.2  jdolecek  */
     46  1.1.1.8.2.2  jdolecek 
     47  1.1.1.8.2.2  jdolecek ')
     48  1.1.1.8.2.2  jdolecek 
     49  1.1.1.8.2.2  jdolecek /*******************************************************************************
     50  1.1.1.8.2.2  jdolecek  *
     51  1.1.1.8.2.2  jdolecek  * ASL Root and Secondary Terms
     52  1.1.1.8.2.2  jdolecek  *
     53  1.1.1.8.2.2  jdolecek  ******************************************************************************/
     54  1.1.1.8.2.2  jdolecek 
     55  1.1.1.8.2.2  jdolecek /*
     56  1.1.1.8.2.2  jdolecek  * Root term. Allow multiple #line directives before the definition block
     57  1.1.1.8.2.2  jdolecek  * to handle output from preprocessors
     58  1.1.1.8.2.2  jdolecek  */
     59  1.1.1.8.2.2  jdolecek AslCode
     60  1.1.1.8.2.2  jdolecek     : DefinitionBlockList           {$<n>$ = TrLinkOpChildren (
     61  1.1.1.8.2.2  jdolecek                                         TrCreateLeafOp (PARSEOP_ASL_CODE),1, $1);}
     62  1.1.1.8.2.2  jdolecek     | error                         {YYABORT; $$ = NULL;}
     63  1.1.1.8.2.2  jdolecek     ;
     64  1.1.1.8.2.2  jdolecek 
     65  1.1.1.8.2.2  jdolecek 
     66  1.1.1.8.2.2  jdolecek /*
     67  1.1.1.8.2.2  jdolecek  * Note concerning support for "module-level code".
     68  1.1.1.8.2.2  jdolecek  *
     69  1.1.1.8.2.2  jdolecek  * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
     70  1.1.1.8.2.2  jdolecek  * methods (the so-called module-level code.) This support was explicitly
     71  1.1.1.8.2.2  jdolecek  * removed in ACPI 2.0, but this type of code continues to be created by
     72  1.1.1.8.2.2  jdolecek  * BIOS vendors. In order to support the disassembly and recompilation of
     73  1.1.1.8.2.2  jdolecek  * such code (and the porting of ASL code to iASL), iASL supports this
     74  1.1.1.8.2.2  jdolecek  * code in violation of the current ACPI specification.
     75  1.1.1.8.2.2  jdolecek  *
     76  1.1.1.8.2.2  jdolecek  * The grammar change to support module-level code is to revert the
     77  1.1.1.8.2.2  jdolecek  * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
     78  1.1.1.8.2.2  jdolecek  * original use of {TermList} instead (see below.) This allows the use
     79  1.1.1.8.2.2  jdolecek  * of Type1 and Type2 opcodes at module level.
     80  1.1.1.8.2.2  jdolecek  *
     81  1.1.1.8.2.2  jdolecek  * 04/2016: The module-level code is now allowed in the following terms:
     82  1.1.1.8.2.2  jdolecek  * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
     83  1.1.1.8.2.2  jdolecek  * The ObjectList term is obsolete and has been removed.
     84  1.1.1.8.2.2  jdolecek  */
     85  1.1.1.8.2.2  jdolecek DefinitionBlockTerm
     86  1.1.1.8.2.2  jdolecek     : PARSEOP_DEFINITION_BLOCK
     87  1.1.1.8.2.2  jdolecek         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DEFINITION_BLOCK); COMMENT_CAPTURE_OFF;}
     88  1.1.1.8.2.2  jdolecek         String ','
     89  1.1.1.8.2.2  jdolecek         String ','
     90  1.1.1.8.2.2  jdolecek         ByteConst ','
     91  1.1.1.8.2.2  jdolecek         String ','
     92  1.1.1.8.2.2  jdolecek         String ','
     93  1.1.1.8.2.2  jdolecek         DWordConst
     94  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN         {TrSetOpIntegerWidth ($6,$8);
     95  1.1.1.8.2.2  jdolecek                                         TrSetOpEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}
     96  1.1.1.8.2.2  jdolecek             '{' TermList '}'        {$$ = TrLinkOpChildren ($<n>3,7,
     97  1.1.1.8.2.2  jdolecek                                         $4,$6,$8,$10,$12,$14,$18);}
     98  1.1.1.8.2.2  jdolecek     ;
     99  1.1.1.8.2.2  jdolecek 
    100  1.1.1.8.2.2  jdolecek DefinitionBlockList
    101  1.1.1.8.2.2  jdolecek     : DefinitionBlockTerm
    102  1.1.1.8.2.2  jdolecek     | DefinitionBlockTerm
    103  1.1.1.8.2.2  jdolecek         DefinitionBlockList         {$$ = TrLinkPeerOps (2, $1,$2);}
    104  1.1.1.8.2.2  jdolecek     ;
    105  1.1.1.8.2.2  jdolecek 
    106  1.1.1.8.2.2  jdolecek 
    107  1.1.1.8.2.2  jdolecek /******* Basic ASCII identifiers **************************************************/
    108  1.1.1.8.2.2  jdolecek 
    109  1.1.1.8.2.2  jdolecek /* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
    110  1.1.1.8.2.2  jdolecek 
    111  1.1.1.8.2.2  jdolecek NameString
    112  1.1.1.8.2.2  jdolecek     : NameSeg                       {}
    113  1.1.1.8.2.2  jdolecek     | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) $1);}
    114  1.1.1.8.2.2  jdolecek     | PARSEOP_IO                    {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
    115  1.1.1.8.2.2  jdolecek     | PARSEOP_DMA                   {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
    116  1.1.1.8.2.2  jdolecek     | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
    117  1.1.1.8.2.2  jdolecek     | PARSEOP_FOR                   {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "FOR");}
    118  1.1.1.8.2.2  jdolecek     ;
    119  1.1.1.8.2.2  jdolecek /*
    120  1.1.1.8.2.2  jdolecek NameSeg
    121  1.1.1.8.2.2  jdolecek     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
    122  1.1.1.8.2.2  jdolecek                                         TrNormalizeNameSeg ($1));}
    123  1.1.1.8.2.2  jdolecek     ;
    124  1.1.1.8.2.2  jdolecek */
    125  1.1.1.8.2.2  jdolecek 
    126  1.1.1.8.2.2  jdolecek NameSeg
    127  1.1.1.8.2.2  jdolecek     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESEG,
    128  1.1.1.8.2.2  jdolecek                                         (ACPI_NATIVE_INT) AslCompilerlval.s);}
    129  1.1.1.8.2.2  jdolecek     ;
    130  1.1.1.8.2.2  jdolecek 
    131  1.1.1.8.2.2  jdolecek 
    132  1.1.1.8.2.2  jdolecek /******* Fundamental argument/statement types ***********************************/
    133  1.1.1.8.2.2  jdolecek 
    134  1.1.1.8.2.2  jdolecek Term
    135  1.1.1.8.2.2  jdolecek     : Object                        {}
    136  1.1.1.8.2.2  jdolecek     | Type1Opcode                   {}
    137  1.1.1.8.2.2  jdolecek     | Type2Opcode                   {}
    138  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    139  1.1.1.8.2.2  jdolecek     | Type2StringOpcode             {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    140  1.1.1.8.2.2  jdolecek     | Type2BufferOpcode             {}
    141  1.1.1.8.2.2  jdolecek     | Type2BufferOrStringOpcode     {}
    142  1.1.1.8.2.2  jdolecek     | error                         {$$ = AslDoError(); yyclearin;}
    143  1.1.1.8.2.2  jdolecek     ;
    144  1.1.1.8.2.2  jdolecek 
    145  1.1.1.8.2.2  jdolecek SuperName
    146  1.1.1.8.2.2  jdolecek     : SimpleName                    {}
    147  1.1.1.8.2.2  jdolecek     | DebugTerm                     {}
    148  1.1.1.8.2.2  jdolecek     | Type6Opcode                   {}
    149  1.1.1.8.2.2  jdolecek     ;
    150  1.1.1.8.2.2  jdolecek 
    151  1.1.1.8.2.2  jdolecek Target
    152  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateNullTargetOp ();} /* Placeholder is a ZeroOp object */
    153  1.1.1.8.2.2  jdolecek     | ','                           {$$ = TrCreateNullTargetOp ();} /* Placeholder is a ZeroOp object */
    154  1.1.1.8.2.2  jdolecek     | ',' SuperName                 {$$ = TrSetOpFlags ($2, OP_IS_TARGET);}
    155  1.1.1.8.2.2  jdolecek     ;
    156  1.1.1.8.2.2  jdolecek 
    157  1.1.1.8.2.2  jdolecek RequiredTarget
    158  1.1.1.8.2.2  jdolecek     : ',' SuperName                 {$$ = TrSetOpFlags ($2, OP_IS_TARGET);}
    159  1.1.1.8.2.2  jdolecek     ;
    160  1.1.1.8.2.2  jdolecek 
    161  1.1.1.8.2.2  jdolecek TermArg
    162  1.1.1.8.2.2  jdolecek     : SimpleName                    {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    163  1.1.1.8.2.2  jdolecek     | Type2Opcode                   {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    164  1.1.1.8.2.2  jdolecek     | DataObject                    {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    165  1.1.1.8.2.2  jdolecek     | PARSEOP_OPEN_PAREN
    166  1.1.1.8.2.2  jdolecek         TermArg
    167  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN         {$$ = TrSetOpFlags ($2, OP_IS_TERM_ARG);}
    168  1.1.1.8.2.2  jdolecek     ;
    169  1.1.1.8.2.2  jdolecek 
    170  1.1.1.8.2.2  jdolecek /*
    171  1.1.1.8.2.2  jdolecek  NOTE: Removed from TermArg due to reduce/reduce conflicts:
    172  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    173  1.1.1.8.2.2  jdolecek     | Type2StringOpcode             {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    174  1.1.1.8.2.2  jdolecek     | Type2BufferOpcode             {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    175  1.1.1.8.2.2  jdolecek     | Type2BufferOrStringOpcode     {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
    176  1.1.1.8.2.2  jdolecek 
    177  1.1.1.8.2.2  jdolecek */
    178  1.1.1.8.2.2  jdolecek 
    179  1.1.1.8.2.2  jdolecek MethodInvocationTerm
    180  1.1.1.8.2.2  jdolecek     : NameString
    181  1.1.1.8.2.2  jdolecek         PARSEOP_OPEN_PAREN          {TrSetOpIntegerValue (PARSEOP_METHODCALL, $1); COMMENT_CAPTURE_OFF;}
    182  1.1.1.8.2.2  jdolecek         ArgList
    183  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildOp ($1,$4); COMMENT_CAPTURE_ON;}
    184  1.1.1.8.2.2  jdolecek     ;
    185  1.1.1.8.2.2  jdolecek 
    186  1.1.1.8.2.2  jdolecek /* OptionalCount must appear before ByteList or an incorrect reduction will result */
    187  1.1.1.8.2.2  jdolecek 
    188  1.1.1.8.2.2  jdolecek OptionalCount
    189  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateLeafOp (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    190  1.1.1.8.2.2  jdolecek     | ','                           {$$ = TrCreateLeafOp (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
    191  1.1.1.8.2.2  jdolecek     | ',' TermArg                   {$$ = $2;}
    192  1.1.1.8.2.2  jdolecek     ;
    193  1.1.1.8.2.2  jdolecek 
    194  1.1.1.8.2.2  jdolecek /*
    195  1.1.1.8.2.2  jdolecek  * Data count for buffers and packages (byte count for buffers,
    196  1.1.1.8.2.2  jdolecek  * element count for packages).
    197  1.1.1.8.2.2  jdolecek  */
    198  1.1.1.8.2.2  jdolecek OptionalDataCount
    199  1.1.1.8.2.2  jdolecek 
    200  1.1.1.8.2.2  jdolecek         /* Legacy ASL */
    201  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    202  1.1.1.8.2.2  jdolecek     | PARSEOP_OPEN_PAREN
    203  1.1.1.8.2.2  jdolecek         TermArg
    204  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN         {$$ = $2;}
    205  1.1.1.8.2.2  jdolecek     | PARSEOP_OPEN_PAREN
    206  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
    207  1.1.1.8.2.2  jdolecek 
    208  1.1.1.8.2.2  jdolecek         /* C-style (ASL+) -- adds equals term */
    209  1.1.1.8.2.2  jdolecek 
    210  1.1.1.8.2.2  jdolecek     |  PARSEOP_EXP_EQUALS           {$$ = NULL;}
    211  1.1.1.8.2.2  jdolecek 
    212  1.1.1.8.2.2  jdolecek     | PARSEOP_OPEN_PAREN
    213  1.1.1.8.2.2  jdolecek         TermArg
    214  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN
    215  1.1.1.8.2.2  jdolecek         PARSEOP_EXP_EQUALS          {$$ = $2;}
    216  1.1.1.8.2.2  jdolecek 
    217  1.1.1.8.2.2  jdolecek     | PARSEOP_OPEN_PAREN
    218  1.1.1.8.2.2  jdolecek         PARSEOP_CLOSE_PAREN
    219  1.1.1.8.2.2  jdolecek         String
    220  1.1.1.8.2.2  jdolecek         PARSEOP_EXP_EQUALS          {$$ = NULL;}
    221  1.1.1.8.2.2  jdolecek     ;
    222  1.1.1.8.2.2  jdolecek 
    223  1.1.1.8.2.2  jdolecek 
    224  1.1.1.8.2.2  jdolecek /******* List Terms **************************************************/
    225  1.1.1.8.2.2  jdolecek 
    226  1.1.1.8.2.2  jdolecek     /* ACPI 3.0 -- allow semicolons between terms */
    227  1.1.1.8.2.2  jdolecek 
    228  1.1.1.8.2.2  jdolecek TermList
    229  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    230  1.1.1.8.2.2  jdolecek     | TermList Term                 {$$ = TrLinkPeerOp (
    231  1.1.1.8.2.2  jdolecek                                         TrSetOpFlags ($1, OP_RESULT_NOT_USED),$2);}
    232  1.1.1.8.2.2  jdolecek     | TermList Term ';'             {$$ = TrLinkPeerOp (
    233  1.1.1.8.2.2  jdolecek                                         TrSetOpFlags ($1, OP_RESULT_NOT_USED),$2);}
    234  1.1.1.8.2.2  jdolecek     | TermList ';' Term             {$$ = TrLinkPeerOp (
    235  1.1.1.8.2.2  jdolecek                                         TrSetOpFlags ($1, OP_RESULT_NOT_USED),$3);}
    236  1.1.1.8.2.2  jdolecek     | TermList ';' Term ';'         {$$ = TrLinkPeerOp (
    237  1.1.1.8.2.2  jdolecek                                         TrSetOpFlags ($1, OP_RESULT_NOT_USED),$3);}
    238  1.1.1.8.2.2  jdolecek     ;
    239  1.1.1.8.2.2  jdolecek 
    240  1.1.1.8.2.2  jdolecek ArgList
    241  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    242  1.1.1.8.2.2  jdolecek     | TermArg
    243  1.1.1.8.2.2  jdolecek     | ArgList ','                   /* Allows a trailing comma at list end */
    244  1.1.1.8.2.2  jdolecek     | ArgList ','
    245  1.1.1.8.2.2  jdolecek         TermArg                     {$$ = TrLinkPeerOp ($1,$3);}
    246  1.1.1.8.2.2  jdolecek     ;
    247  1.1.1.8.2.2  jdolecek 
    248  1.1.1.8.2.2  jdolecek ByteList
    249  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    250  1.1.1.8.2.2  jdolecek     | ByteConstExpr
    251  1.1.1.8.2.2  jdolecek     | ByteList ','                  /* Allows a trailing comma at list end */
    252  1.1.1.8.2.2  jdolecek     | ByteList ','
    253  1.1.1.8.2.2  jdolecek         ByteConstExpr               {$$ = TrLinkPeerOp ($1,$3);}
    254  1.1.1.8.2.2  jdolecek     ;
    255  1.1.1.8.2.2  jdolecek 
    256  1.1.1.8.2.2  jdolecek DWordList
    257  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    258  1.1.1.8.2.2  jdolecek     | DWordConstExpr
    259  1.1.1.8.2.2  jdolecek     | DWordList ','                 /* Allows a trailing comma at list end */
    260  1.1.1.8.2.2  jdolecek     | DWordList ','
    261  1.1.1.8.2.2  jdolecek         DWordConstExpr              {$$ = TrLinkPeerOp ($1,$3);}
    262  1.1.1.8.2.2  jdolecek     ;
    263  1.1.1.8.2.2  jdolecek 
    264  1.1.1.8.2.2  jdolecek FieldUnitList
    265  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    266  1.1.1.8.2.2  jdolecek     | FieldUnit
    267  1.1.1.8.2.2  jdolecek     | FieldUnitList ','             /* Allows a trailing comma at list end */
    268  1.1.1.8.2.2  jdolecek     | FieldUnitList ','
    269  1.1.1.8.2.2  jdolecek         FieldUnit                   {$$ = TrLinkPeerOp ($1,$3);}
    270  1.1.1.8.2.2  jdolecek     ;
    271  1.1.1.8.2.2  jdolecek 
    272  1.1.1.8.2.2  jdolecek FieldUnit
    273  1.1.1.8.2.2  jdolecek     : FieldUnitEntry                {}
    274  1.1.1.8.2.2  jdolecek     | OffsetTerm                    {}
    275  1.1.1.8.2.2  jdolecek     | AccessAsTerm                  {}
    276  1.1.1.8.2.2  jdolecek     | ConnectionTerm                {}
    277  1.1.1.8.2.2  jdolecek     ;
    278  1.1.1.8.2.2  jdolecek 
    279  1.1.1.8.2.2  jdolecek FieldUnitEntry
    280  1.1.1.8.2.2  jdolecek     : ',' AmlPackageLengthTerm      {$$ = TrCreateOp (PARSEOP_RESERVED_BYTES,1,$2);}
    281  1.1.1.8.2.2  jdolecek     | NameSeg ','
    282  1.1.1.8.2.2  jdolecek         AmlPackageLengthTerm        {$$ = TrLinkChildOp ($1,$3);}
    283  1.1.1.8.2.2  jdolecek     ;
    284  1.1.1.8.2.2  jdolecek 
    285  1.1.1.8.2.2  jdolecek Object
    286  1.1.1.8.2.2  jdolecek     : CompilerDirective             {}
    287  1.1.1.8.2.2  jdolecek     | NamedObject                   {}
    288  1.1.1.8.2.2  jdolecek     | NameSpaceModifier             {}
    289  1.1.1.8.2.2  jdolecek /*    | StructureTerm                 {} */
    290  1.1.1.8.2.2  jdolecek     ;
    291  1.1.1.8.2.2  jdolecek 
    292  1.1.1.8.2.2  jdolecek PackageList
    293  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    294  1.1.1.8.2.2  jdolecek     | PackageElement
    295  1.1.1.8.2.2  jdolecek     | PackageList ','               /* Allows a trailing comma at list end */
    296  1.1.1.8.2.2  jdolecek     | PackageList ','
    297  1.1.1.8.2.2  jdolecek         PackageElement              {$$ = TrLinkPeerOp ($1,$3);}
    298  1.1.1.8.2.2  jdolecek     ;
    299  1.1.1.8.2.2  jdolecek 
    300  1.1.1.8.2.2  jdolecek PackageElement
    301  1.1.1.8.2.2  jdolecek     : DataObject                    {}
    302  1.1.1.8.2.2  jdolecek     | NameString                    {}
    303  1.1.1.8.2.2  jdolecek     ;
    304  1.1.1.8.2.2  jdolecek 
    305  1.1.1.8.2.2  jdolecek     /* Rules for specifying the type of one method argument or return value */
    306  1.1.1.8.2.2  jdolecek 
    307  1.1.1.8.2.2  jdolecek ParameterTypePackage
    308  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    309  1.1.1.8.2.2  jdolecek     | ObjectTypeKeyword             {$$ = $1;}
    310  1.1.1.8.2.2  jdolecek     | ParameterTypePackage ','
    311  1.1.1.8.2.2  jdolecek         ObjectTypeKeyword           {$$ = TrLinkPeerOps (2,$1,$3);}
    312  1.1.1.8.2.2  jdolecek     ;
    313  1.1.1.8.2.2  jdolecek 
    314  1.1.1.8.2.2  jdolecek ParameterTypePackageList
    315  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    316  1.1.1.8.2.2  jdolecek     | ObjectTypeKeyword             {$$ = $1;}
    317  1.1.1.8.2.2  jdolecek     | '{' ParameterTypePackage '}'  {$$ = $2;}
    318  1.1.1.8.2.2  jdolecek     ;
    319  1.1.1.8.2.2  jdolecek 
    320  1.1.1.8.2.2  jdolecek OptionalParameterTypePackage
    321  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateLeafOp (PARSEOP_DEFAULT_ARG);}
    322  1.1.1.8.2.2  jdolecek     | ',' ParameterTypePackageList  {$$ = TrLinkOpChildren (
    323  1.1.1.8.2.2  jdolecek                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),1,$2);}
    324  1.1.1.8.2.2  jdolecek     ;
    325  1.1.1.8.2.2  jdolecek 
    326  1.1.1.8.2.2  jdolecek     /* Rules for specifying the types for method arguments */
    327  1.1.1.8.2.2  jdolecek 
    328  1.1.1.8.2.2  jdolecek ParameterTypesPackage
    329  1.1.1.8.2.2  jdolecek     : ParameterTypePackageList      {$$ = $1;}
    330  1.1.1.8.2.2  jdolecek     | ParameterTypesPackage ','
    331  1.1.1.8.2.2  jdolecek         ParameterTypePackageList    {$$ = TrLinkPeerOps (2,$1,$3);}
    332  1.1.1.8.2.2  jdolecek     ;
    333  1.1.1.8.2.2  jdolecek 
    334  1.1.1.8.2.2  jdolecek ParameterTypesPackageList
    335  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    336  1.1.1.8.2.2  jdolecek     | ObjectTypeKeyword             {$$ = $1;}
    337  1.1.1.8.2.2  jdolecek     | '{' ParameterTypesPackage '}' {$$ = $2;}
    338  1.1.1.8.2.2  jdolecek     ;
    339  1.1.1.8.2.2  jdolecek 
    340  1.1.1.8.2.2  jdolecek OptionalParameterTypesPackage
    341  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateLeafOp (PARSEOP_DEFAULT_ARG);}
    342  1.1.1.8.2.2  jdolecek     | ',' ParameterTypesPackageList {$$ = TrLinkOpChildren (
    343  1.1.1.8.2.2  jdolecek                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),1,$2);}
    344  1.1.1.8.2.2  jdolecek     ;
    345  1.1.1.8.2.2  jdolecek 
    346  1.1.1.8.2.2  jdolecek /*
    347  1.1.1.8.2.2  jdolecek  * Case-Default list; allow only one Default term and unlimited Case terms
    348  1.1.1.8.2.2  jdolecek  */
    349  1.1.1.8.2.2  jdolecek CaseDefaultTermList
    350  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    351  1.1.1.8.2.2  jdolecek     | CaseTerm                      {}
    352  1.1.1.8.2.2  jdolecek     | DefaultTerm                   {}
    353  1.1.1.8.2.2  jdolecek     | CaseDefaultTermList
    354  1.1.1.8.2.2  jdolecek         CaseTerm                    {$$ = TrLinkPeerOp ($1,$2);}
    355  1.1.1.8.2.2  jdolecek     | CaseDefaultTermList
    356  1.1.1.8.2.2  jdolecek         DefaultTerm                 {$$ = TrLinkPeerOp ($1,$2);}
    357  1.1.1.8.2.2  jdolecek 
    358  1.1.1.8.2.2  jdolecek /* Original - attempts to force zero or one default term within the switch */
    359  1.1.1.8.2.2  jdolecek 
    360  1.1.1.8.2.2  jdolecek /*
    361  1.1.1.8.2.2  jdolecek CaseDefaultTermList
    362  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    363  1.1.1.8.2.2  jdolecek     | CaseTermList
    364  1.1.1.8.2.2  jdolecek         DefaultTerm
    365  1.1.1.8.2.2  jdolecek         CaseTermList                {$$ = TrLinkPeerOp ($1,TrLinkPeerOp ($2, $3));}
    366  1.1.1.8.2.2  jdolecek     | CaseTermList
    367  1.1.1.8.2.2  jdolecek         CaseTerm                    {$$ = TrLinkPeerOp ($1,$2);}
    368  1.1.1.8.2.2  jdolecek     ;
    369  1.1.1.8.2.2  jdolecek 
    370  1.1.1.8.2.2  jdolecek CaseTermList
    371  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    372  1.1.1.8.2.2  jdolecek     | CaseTerm                      {}
    373  1.1.1.8.2.2  jdolecek     | CaseTermList
    374  1.1.1.8.2.2  jdolecek         CaseTerm                    {$$ = TrLinkPeerOp ($1,$2);}
    375  1.1.1.8.2.2  jdolecek     ;
    376  1.1.1.8.2.2  jdolecek */
    377  1.1.1.8.2.2  jdolecek 
    378  1.1.1.8.2.2  jdolecek 
    379  1.1.1.8.2.2  jdolecek /*******************************************************************************
    380  1.1.1.8.2.2  jdolecek  *
    381  1.1.1.8.2.2  jdolecek  * ASL Data and Constant Terms
    382  1.1.1.8.2.2  jdolecek  *
    383  1.1.1.8.2.2  jdolecek  ******************************************************************************/
    384  1.1.1.8.2.2  jdolecek 
    385  1.1.1.8.2.2  jdolecek DataObject
    386  1.1.1.8.2.2  jdolecek     : BufferData                    {}
    387  1.1.1.8.2.2  jdolecek     | PackageData                   {}
    388  1.1.1.8.2.2  jdolecek     | IntegerData                   {}
    389  1.1.1.8.2.2  jdolecek     | StringData                    {}
    390  1.1.1.8.2.2  jdolecek     ;
    391  1.1.1.8.2.2  jdolecek 
    392  1.1.1.8.2.2  jdolecek BufferData
    393  1.1.1.8.2.2  jdolecek     : Type5Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    394  1.1.1.8.2.2  jdolecek     | Type2BufferOrStringOpcode     {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    395  1.1.1.8.2.2  jdolecek     | Type2BufferOpcode             {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    396  1.1.1.8.2.2  jdolecek     | BufferTerm                    {}
    397  1.1.1.8.2.2  jdolecek     ;
    398  1.1.1.8.2.2  jdolecek 
    399  1.1.1.8.2.2  jdolecek PackageData
    400  1.1.1.8.2.2  jdolecek     : PackageTerm                   {}
    401  1.1.1.8.2.2  jdolecek     ;
    402  1.1.1.8.2.2  jdolecek 
    403  1.1.1.8.2.2  jdolecek IntegerData
    404  1.1.1.8.2.2  jdolecek     : Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    405  1.1.1.8.2.2  jdolecek     | Type3Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    406  1.1.1.8.2.2  jdolecek     | Integer                       {}
    407  1.1.1.8.2.2  jdolecek     | ConstTerm                     {}
    408  1.1.1.8.2.2  jdolecek     ;
    409  1.1.1.8.2.2  jdolecek 
    410  1.1.1.8.2.2  jdolecek StringData
    411  1.1.1.8.2.2  jdolecek     : Type2StringOpcode             {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    412  1.1.1.8.2.2  jdolecek     | String                        {}
    413  1.1.1.8.2.2  jdolecek     ;
    414  1.1.1.8.2.2  jdolecek 
    415  1.1.1.8.2.2  jdolecek ByteConst
    416  1.1.1.8.2.2  jdolecek     : Integer                       {$$ = TrSetOpIntegerValue (PARSEOP_BYTECONST, $1);}
    417  1.1.1.8.2.2  jdolecek     ;
    418  1.1.1.8.2.2  jdolecek 
    419  1.1.1.8.2.2  jdolecek WordConst
    420  1.1.1.8.2.2  jdolecek     : Integer                       {$$ = TrSetOpIntegerValue (PARSEOP_WORDCONST, $1);}
    421  1.1.1.8.2.2  jdolecek     ;
    422  1.1.1.8.2.2  jdolecek 
    423  1.1.1.8.2.2  jdolecek DWordConst
    424  1.1.1.8.2.2  jdolecek     : Integer                       {$$ = TrSetOpIntegerValue (PARSEOP_DWORDCONST, $1);}
    425  1.1.1.8.2.2  jdolecek     ;
    426  1.1.1.8.2.2  jdolecek 
    427  1.1.1.8.2.2  jdolecek QWordConst
    428  1.1.1.8.2.2  jdolecek     : Integer                       {$$ = TrSetOpIntegerValue (PARSEOP_QWORDCONST, $1);}
    429  1.1.1.8.2.2  jdolecek     ;
    430  1.1.1.8.2.2  jdolecek 
    431  1.1.1.8.2.2  jdolecek /*
    432  1.1.1.8.2.2  jdolecek  * The OP_COMPILE_TIME_CONST flag in the following constant expressions
    433  1.1.1.8.2.2  jdolecek  * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
    434  1.1.1.8.2.2  jdolecek  * to simple integers. It is an error if these types of expressions cannot be
    435  1.1.1.8.2.2  jdolecek  * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
    436  1.1.1.8.2.2  jdolecek  * Note: The required byte length of the constant is passed through to the
    437  1.1.1.8.2.2  jdolecek  * constant folding code in the node AmlLength field.
    438  1.1.1.8.2.2  jdolecek  */
    439  1.1.1.8.2.2  jdolecek ByteConstExpr
    440  1.1.1.8.2.2  jdolecek     : Type3Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    441  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 1);}
    442  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    443  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 1);}
    444  1.1.1.8.2.2  jdolecek     | ConstExprTerm                 {$$ = TrSetOpIntegerValue (PARSEOP_BYTECONST, $1);}
    445  1.1.1.8.2.2  jdolecek     | ByteConst                     {}
    446  1.1.1.8.2.2  jdolecek     ;
    447  1.1.1.8.2.2  jdolecek 
    448  1.1.1.8.2.2  jdolecek WordConstExpr
    449  1.1.1.8.2.2  jdolecek     : Type3Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    450  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 2);}
    451  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    452  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 2);}
    453  1.1.1.8.2.2  jdolecek     | ConstExprTerm                 {$$ = TrSetOpIntegerValue (PARSEOP_WORDCONST, $1);}
    454  1.1.1.8.2.2  jdolecek     | WordConst                     {}
    455  1.1.1.8.2.2  jdolecek     ;
    456  1.1.1.8.2.2  jdolecek 
    457  1.1.1.8.2.2  jdolecek DWordConstExpr
    458  1.1.1.8.2.2  jdolecek     : Type3Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    459  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 4);}
    460  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    461  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 4);}
    462  1.1.1.8.2.2  jdolecek     | ConstExprTerm                 {$$ = TrSetOpIntegerValue (PARSEOP_DWORDCONST, $1);}
    463  1.1.1.8.2.2  jdolecek     | DWordConst                    {}
    464  1.1.1.8.2.2  jdolecek     ;
    465  1.1.1.8.2.2  jdolecek 
    466  1.1.1.8.2.2  jdolecek QWordConstExpr
    467  1.1.1.8.2.2  jdolecek     : Type3Opcode                   {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    468  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 8);}
    469  1.1.1.8.2.2  jdolecek     | Type2IntegerOpcode            {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);
    470  1.1.1.8.2.2  jdolecek                                         TrSetOpAmlLength ($1, 8);}
    471  1.1.1.8.2.2  jdolecek     | ConstExprTerm                 {$$ = TrSetOpIntegerValue (PARSEOP_QWORDCONST, $1);}
    472  1.1.1.8.2.2  jdolecek     | QWordConst                    {}
    473  1.1.1.8.2.2  jdolecek     ;
    474  1.1.1.8.2.2  jdolecek 
    475  1.1.1.8.2.2  jdolecek ConstTerm
    476  1.1.1.8.2.2  jdolecek     : ConstExprTerm                 {}
    477  1.1.1.8.2.2  jdolecek     | PARSEOP_REVISION              {$$ = TrCreateLeafOp (PARSEOP_REVISION);}
    478  1.1.1.8.2.2  jdolecek     ;
    479  1.1.1.8.2.2  jdolecek 
    480  1.1.1.8.2.2  jdolecek ConstExprTerm
    481  1.1.1.8.2.2  jdolecek     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafOp (PARSEOP_ZERO, 0);}
    482  1.1.1.8.2.2  jdolecek     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafOp (PARSEOP_ONE, 1);}
    483  1.1.1.8.2.2  jdolecek     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafOp (PARSEOP_ONES, ACPI_UINT64_MAX);}
    484  1.1.1.8.2.2  jdolecek     | PARSEOP___DATE__              {$$ = TrCreateConstantLeafOp (PARSEOP___DATE__);}
    485  1.1.1.8.2.2  jdolecek     | PARSEOP___FILE__              {$$ = TrCreateConstantLeafOp (PARSEOP___FILE__);}
    486  1.1.1.8.2.2  jdolecek     | PARSEOP___LINE__              {$$ = TrCreateConstantLeafOp (PARSEOP___LINE__);}
    487  1.1.1.8.2.2  jdolecek     | PARSEOP___PATH__              {$$ = TrCreateConstantLeafOp (PARSEOP___PATH__);}
    488  1.1.1.8.2.2  jdolecek     | PARSEOP___METHOD__            {$$ = TrCreateConstantLeafOp (PARSEOP___METHOD__);}
    489  1.1.1.8.2.2  jdolecek     ;
    490  1.1.1.8.2.2  jdolecek 
    491  1.1.1.8.2.2  jdolecek Integer
    492  1.1.1.8.2.2  jdolecek     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafOp (PARSEOP_INTEGER,
    493  1.1.1.8.2.2  jdolecek                                         AslCompilerlval.i);}
    494  1.1.1.8.2.2  jdolecek     ;
    495  1.1.1.8.2.2  jdolecek 
    496  1.1.1.8.2.2  jdolecek String
    497  1.1.1.8.2.2  jdolecek     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafOp (PARSEOP_STRING_LITERAL,
    498  1.1.1.8.2.2  jdolecek                                         (ACPI_NATIVE_INT) AslCompilerlval.s);}
    499  1.1.1.8.2.2  jdolecek     ;
    500  1.1.1.8.2.2  jdolecek 
    501  1.1.1.8.2.2  jdolecek 
    502  1.1.1.8.2.2  jdolecek /*******************************************************************************
    503  1.1.1.8.2.2  jdolecek  *
    504  1.1.1.8.2.2  jdolecek  * ASL Opcode Terms
    505  1.1.1.8.2.2  jdolecek  *
    506  1.1.1.8.2.2  jdolecek  ******************************************************************************/
    507  1.1.1.8.2.2  jdolecek 
    508  1.1.1.8.2.2  jdolecek CompilerDirective
    509  1.1.1.8.2.2  jdolecek     : IncludeTerm                   {}
    510  1.1.1.8.2.2  jdolecek     | IncludeEndTerm                {}
    511  1.1.1.8.2.2  jdolecek     | ExternalTerm                  {}
    512  1.1.1.8.2.2  jdolecek     ;
    513  1.1.1.8.2.2  jdolecek 
    514  1.1.1.8.2.2  jdolecek NamedObject
    515  1.1.1.8.2.2  jdolecek     : BankFieldTerm                 {}
    516  1.1.1.8.2.2  jdolecek     | CreateBitFieldTerm            {}
    517  1.1.1.8.2.2  jdolecek     | CreateByteFieldTerm           {}
    518  1.1.1.8.2.2  jdolecek     | CreateDWordFieldTerm          {}
    519  1.1.1.8.2.2  jdolecek     | CreateFieldTerm               {}
    520  1.1.1.8.2.2  jdolecek     | CreateQWordFieldTerm          {}
    521  1.1.1.8.2.2  jdolecek     | CreateWordFieldTerm           {}
    522  1.1.1.8.2.2  jdolecek     | DataRegionTerm                {}
    523  1.1.1.8.2.2  jdolecek     | DeviceTerm                    {}
    524  1.1.1.8.2.2  jdolecek     | EventTerm                     {}
    525  1.1.1.8.2.2  jdolecek     | FieldTerm                     {}
    526  1.1.1.8.2.2  jdolecek     | FunctionTerm                  {}
    527  1.1.1.8.2.2  jdolecek     | IndexFieldTerm                {}
    528  1.1.1.8.2.2  jdolecek     | MethodTerm                    {}
    529  1.1.1.8.2.2  jdolecek     | MutexTerm                     {}
    530  1.1.1.8.2.2  jdolecek     | OpRegionTerm                  {}
    531  1.1.1.8.2.2  jdolecek     | PowerResTerm                  {}
    532  1.1.1.8.2.2  jdolecek     | ProcessorTerm                 {}
    533  1.1.1.8.2.2  jdolecek     | ThermalZoneTerm               {}
    534  1.1.1.8.2.2  jdolecek     ;
    535  1.1.1.8.2.2  jdolecek 
    536  1.1.1.8.2.2  jdolecek NameSpaceModifier
    537  1.1.1.8.2.2  jdolecek     : AliasTerm                     {}
    538  1.1.1.8.2.2  jdolecek     | NameTerm                      {}
    539  1.1.1.8.2.2  jdolecek /*    | NameTermAslPlus               {} */
    540  1.1.1.8.2.2  jdolecek     | ScopeTerm                     {}
    541  1.1.1.8.2.2  jdolecek     ;
    542  1.1.1.8.2.2  jdolecek 
    543  1.1.1.8.2.2  jdolecek SimpleName
    544  1.1.1.8.2.2  jdolecek     : NameString                    {}
    545  1.1.1.8.2.2  jdolecek     | LocalTerm                     {}
    546  1.1.1.8.2.2  jdolecek     | ArgTerm                       {}
    547  1.1.1.8.2.2  jdolecek     ;
    548  1.1.1.8.2.2  jdolecek 
    549  1.1.1.8.2.2  jdolecek /* For ObjectType(), SuperName except for MethodInvocationTerm */
    550  1.1.1.8.2.2  jdolecek 
    551  1.1.1.8.2.2  jdolecek ObjectTypeSource
    552  1.1.1.8.2.2  jdolecek     : SimpleName                    {}
    553  1.1.1.8.2.2  jdolecek     | DebugTerm                     {}
    554  1.1.1.8.2.2  jdolecek     | RefOfTerm                     {}
    555  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    556  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    557  1.1.1.8.2.2  jdolecek     | IndexExpTerm                  {}
    558  1.1.1.8.2.2  jdolecek     ;
    559  1.1.1.8.2.2  jdolecek 
    560  1.1.1.8.2.2  jdolecek /* For DeRefOf(), SuperName except for DerefOf and Debug */
    561  1.1.1.8.2.2  jdolecek 
    562  1.1.1.8.2.2  jdolecek DerefOfSource
    563  1.1.1.8.2.2  jdolecek     : SimpleName                    {}
    564  1.1.1.8.2.2  jdolecek     | RefOfTerm                     {}
    565  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    566  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    567  1.1.1.8.2.2  jdolecek     | IndexExpTerm                  {}
    568  1.1.1.8.2.2  jdolecek     | StoreTerm                     {}
    569  1.1.1.8.2.2  jdolecek     | EqualsTerm                    {}
    570  1.1.1.8.2.2  jdolecek     | MethodInvocationTerm          {}
    571  1.1.1.8.2.2  jdolecek     ;
    572  1.1.1.8.2.2  jdolecek 
    573  1.1.1.8.2.2  jdolecek /* For RefOf(), SuperName except for RefOf and MethodInvocationTerm */
    574  1.1.1.8.2.2  jdolecek 
    575  1.1.1.8.2.2  jdolecek RefOfSource
    576  1.1.1.8.2.2  jdolecek     : SimpleName                    {}
    577  1.1.1.8.2.2  jdolecek     | DebugTerm                     {}
    578  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    579  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    580  1.1.1.8.2.2  jdolecek     | IndexExpTerm                  {}
    581  1.1.1.8.2.2  jdolecek     ;
    582  1.1.1.8.2.2  jdolecek 
    583  1.1.1.8.2.2  jdolecek /* For CondRefOf(), SuperName except for RefOf and MethodInvocationTerm */
    584  1.1.1.8.2.2  jdolecek 
    585  1.1.1.8.2.2  jdolecek CondRefOfSource
    586  1.1.1.8.2.2  jdolecek     : SimpleName                    {}
    587  1.1.1.8.2.2  jdolecek     | DebugTerm                     {}
    588  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    589  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    590  1.1.1.8.2.2  jdolecek     | IndexExpTerm                  {}
    591  1.1.1.8.2.2  jdolecek     ;
    592  1.1.1.8.2.2  jdolecek 
    593  1.1.1.8.2.2  jdolecek /*
    594  1.1.1.8.2.2  jdolecek  * Opcode types, as defined in the ACPI specification
    595  1.1.1.8.2.2  jdolecek  */
    596  1.1.1.8.2.2  jdolecek Type1Opcode
    597  1.1.1.8.2.2  jdolecek     : BreakTerm                     {}
    598  1.1.1.8.2.2  jdolecek     | BreakPointTerm                {}
    599  1.1.1.8.2.2  jdolecek     | ContinueTerm                  {}
    600  1.1.1.8.2.2  jdolecek     | FatalTerm                     {}
    601  1.1.1.8.2.2  jdolecek     | ForTerm                       {}
    602  1.1.1.8.2.2  jdolecek     | ElseIfTerm                    {}
    603  1.1.1.8.2.2  jdolecek     | LoadTerm                      {}
    604  1.1.1.8.2.2  jdolecek     | NoOpTerm                      {}
    605  1.1.1.8.2.2  jdolecek     | NotifyTerm                    {}
    606  1.1.1.8.2.2  jdolecek     | ReleaseTerm                   {}
    607  1.1.1.8.2.2  jdolecek     | ResetTerm                     {}
    608  1.1.1.8.2.2  jdolecek     | ReturnTerm                    {}
    609  1.1.1.8.2.2  jdolecek     | SignalTerm                    {}
    610  1.1.1.8.2.2  jdolecek     | SleepTerm                     {}
    611  1.1.1.8.2.2  jdolecek     | StallTerm                     {}
    612  1.1.1.8.2.2  jdolecek     | SwitchTerm                    {}
    613  1.1.1.8.2.2  jdolecek     | UnloadTerm                    {}
    614  1.1.1.8.2.2  jdolecek     | WhileTerm                     {}
    615  1.1.1.8.2.2  jdolecek     ;
    616  1.1.1.8.2.2  jdolecek 
    617  1.1.1.8.2.2  jdolecek Type2Opcode
    618  1.1.1.8.2.2  jdolecek     : AcquireTerm                   {}
    619  1.1.1.8.2.2  jdolecek     | CondRefOfTerm                 {}
    620  1.1.1.8.2.2  jdolecek     | CopyObjectTerm                {}
    621  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    622  1.1.1.8.2.2  jdolecek     | ObjectTypeTerm                {}
    623  1.1.1.8.2.2  jdolecek     | RefOfTerm                     {}
    624  1.1.1.8.2.2  jdolecek     | SizeOfTerm                    {}
    625  1.1.1.8.2.2  jdolecek     | StoreTerm                     {}
    626  1.1.1.8.2.2  jdolecek     | EqualsTerm                    {}
    627  1.1.1.8.2.2  jdolecek     | TimerTerm                     {}
    628  1.1.1.8.2.2  jdolecek     | WaitTerm                      {}
    629  1.1.1.8.2.2  jdolecek     | MethodInvocationTerm          {}
    630  1.1.1.8.2.2  jdolecek     ;
    631  1.1.1.8.2.2  jdolecek 
    632  1.1.1.8.2.2  jdolecek /*
    633  1.1.1.8.2.2  jdolecek  * Type 3/4/5 opcodes
    634  1.1.1.8.2.2  jdolecek  */
    635  1.1.1.8.2.2  jdolecek Type2IntegerOpcode                  /* "Type3" opcodes */
    636  1.1.1.8.2.2  jdolecek     : Expression                    {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    637  1.1.1.8.2.2  jdolecek     | AddTerm                       {}
    638  1.1.1.8.2.2  jdolecek     | AndTerm                       {}
    639  1.1.1.8.2.2  jdolecek     | DecTerm                       {}
    640  1.1.1.8.2.2  jdolecek     | DivideTerm                    {}
    641  1.1.1.8.2.2  jdolecek     | FindSetLeftBitTerm            {}
    642  1.1.1.8.2.2  jdolecek     | FindSetRightBitTerm           {}
    643  1.1.1.8.2.2  jdolecek     | FromBCDTerm                   {}
    644  1.1.1.8.2.2  jdolecek     | IncTerm                       {}
    645  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    646  1.1.1.8.2.2  jdolecek /*    | StructureIndexTerm            {} */
    647  1.1.1.8.2.2  jdolecek /*    | StructurePointerTerm          {} */
    648  1.1.1.8.2.2  jdolecek     | LAndTerm                      {}
    649  1.1.1.8.2.2  jdolecek     | LEqualTerm                    {}
    650  1.1.1.8.2.2  jdolecek     | LGreaterTerm                  {}
    651  1.1.1.8.2.2  jdolecek     | LGreaterEqualTerm             {}
    652  1.1.1.8.2.2  jdolecek     | LLessTerm                     {}
    653  1.1.1.8.2.2  jdolecek     | LLessEqualTerm                {}
    654  1.1.1.8.2.2  jdolecek     | LNotTerm                      {}
    655  1.1.1.8.2.2  jdolecek     | LNotEqualTerm                 {}
    656  1.1.1.8.2.2  jdolecek     | LoadTableTerm                 {}
    657  1.1.1.8.2.2  jdolecek     | LOrTerm                       {}
    658  1.1.1.8.2.2  jdolecek     | MatchTerm                     {}
    659  1.1.1.8.2.2  jdolecek     | ModTerm                       {}
    660  1.1.1.8.2.2  jdolecek     | MultiplyTerm                  {}
    661  1.1.1.8.2.2  jdolecek     | NAndTerm                      {}
    662  1.1.1.8.2.2  jdolecek     | NOrTerm                       {}
    663  1.1.1.8.2.2  jdolecek     | NotTerm                       {}
    664  1.1.1.8.2.2  jdolecek     | OrTerm                        {}
    665  1.1.1.8.2.2  jdolecek     | ShiftLeftTerm                 {}
    666  1.1.1.8.2.2  jdolecek     | ShiftRightTerm                {}
    667  1.1.1.8.2.2  jdolecek     | SubtractTerm                  {}
    668  1.1.1.8.2.2  jdolecek     | ToBCDTerm                     {}
    669  1.1.1.8.2.2  jdolecek     | ToIntegerTerm                 {}
    670  1.1.1.8.2.2  jdolecek     | XOrTerm                       {}
    671  1.1.1.8.2.2  jdolecek     ;
    672  1.1.1.8.2.2  jdolecek 
    673  1.1.1.8.2.2  jdolecek Type2StringOpcode                   /* "Type4" Opcodes */
    674  1.1.1.8.2.2  jdolecek     : ToDecimalStringTerm           {}
    675  1.1.1.8.2.2  jdolecek     | ToHexStringTerm               {}
    676  1.1.1.8.2.2  jdolecek     | ToStringTerm                  {}
    677  1.1.1.8.2.2  jdolecek     ;
    678  1.1.1.8.2.2  jdolecek 
    679  1.1.1.8.2.2  jdolecek Type2BufferOpcode                   /* "Type5" Opcodes */
    680  1.1.1.8.2.2  jdolecek     : ToBufferTerm                  {}
    681  1.1.1.8.2.2  jdolecek     | ConcatResTerm                 {}
    682  1.1.1.8.2.2  jdolecek     ;
    683  1.1.1.8.2.2  jdolecek 
    684  1.1.1.8.2.2  jdolecek Type2BufferOrStringOpcode
    685  1.1.1.8.2.2  jdolecek     : ConcatTerm                    {$$ = TrSetOpFlags ($1, OP_COMPILE_TIME_CONST);}
    686  1.1.1.8.2.2  jdolecek     | PrintfTerm                    {}
    687  1.1.1.8.2.2  jdolecek     | FprintfTerm                   {}
    688  1.1.1.8.2.2  jdolecek     | MidTerm                       {}
    689  1.1.1.8.2.2  jdolecek     ;
    690  1.1.1.8.2.2  jdolecek 
    691  1.1.1.8.2.2  jdolecek /*
    692  1.1.1.8.2.2  jdolecek  * A type 3 opcode evaluates to an Integer and cannot have a destination operand
    693  1.1.1.8.2.2  jdolecek  */
    694  1.1.1.8.2.2  jdolecek Type3Opcode
    695  1.1.1.8.2.2  jdolecek     : EISAIDTerm                    {}
    696  1.1.1.8.2.2  jdolecek     ;
    697  1.1.1.8.2.2  jdolecek 
    698  1.1.1.8.2.2  jdolecek /* Obsolete
    699  1.1.1.8.2.2  jdolecek Type4Opcode
    700  1.1.1.8.2.2  jdolecek     : ConcatTerm                    {}
    701  1.1.1.8.2.2  jdolecek     | ToDecimalStringTerm           {}
    702  1.1.1.8.2.2  jdolecek     | ToHexStringTerm               {}
    703  1.1.1.8.2.2  jdolecek     | MidTerm                       {}
    704  1.1.1.8.2.2  jdolecek     | ToStringTerm                  {}
    705  1.1.1.8.2.2  jdolecek     ;
    706  1.1.1.8.2.2  jdolecek */
    707  1.1.1.8.2.2  jdolecek 
    708  1.1.1.8.2.2  jdolecek /* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
    709  1.1.1.8.2.2  jdolecek 
    710  1.1.1.8.2.2  jdolecek Type5Opcode
    711  1.1.1.8.2.2  jdolecek     : ResourceTemplateTerm          {}
    712  1.1.1.8.2.2  jdolecek     | UnicodeTerm                   {}
    713  1.1.1.8.2.2  jdolecek     | ToPLDTerm                     {}
    714  1.1.1.8.2.2  jdolecek     | ToUUIDTerm                    {}
    715  1.1.1.8.2.2  jdolecek     ;
    716  1.1.1.8.2.2  jdolecek 
    717  1.1.1.8.2.2  jdolecek Type6Opcode
    718  1.1.1.8.2.2  jdolecek     : RefOfTerm                     {}
    719  1.1.1.8.2.2  jdolecek     | DerefOfTerm                   {}
    720  1.1.1.8.2.2  jdolecek     | IndexTerm                     {}
    721  1.1.1.8.2.2  jdolecek     | IndexExpTerm                  {}
    722  1.1.1.8.2.2  jdolecek /*    | StructureIndexTerm            {} */
    723  1.1.1.8.2.2  jdolecek /*    | StructurePointerTerm          {} */
    724  1.1.1.8.2.2  jdolecek     | MethodInvocationTerm          {}
    725  1.1.1.8.2.2  jdolecek     ;
    726  1.1.1.8.2.2  jdolecek 
    727  1.1.1.8.2.2  jdolecek 
    728  1.1.1.8.2.2  jdolecek /*******************************************************************************
    729  1.1.1.8.2.2  jdolecek  *
    730  1.1.1.8.2.2  jdolecek  * ASL Helper Terms
    731  1.1.1.8.2.2  jdolecek  *
    732  1.1.1.8.2.2  jdolecek  ******************************************************************************/
    733  1.1.1.8.2.2  jdolecek 
    734  1.1.1.8.2.2  jdolecek AmlPackageLengthTerm
    735  1.1.1.8.2.2  jdolecek     : Integer                       {$$ = TrSetOpIntegerValue (PARSEOP_PACKAGE_LENGTH,
    736  1.1.1.8.2.2  jdolecek                                         (ACPI_PARSE_OBJECT *) $1);}
    737  1.1.1.8.2.2  jdolecek     ;
    738  1.1.1.8.2.2  jdolecek 
    739  1.1.1.8.2.2  jdolecek NameStringItem
    740  1.1.1.8.2.2  jdolecek     : ',' NameString                {$$ = $2;}
    741  1.1.1.8.2.2  jdolecek     | ',' error                     {$$ = AslDoError (); yyclearin;}
    742  1.1.1.8.2.2  jdolecek     ;
    743  1.1.1.8.2.2  jdolecek 
    744  1.1.1.8.2.2  jdolecek TermArgItem
    745  1.1.1.8.2.2  jdolecek     : ',' TermArg                   {$$ = $2;}
    746  1.1.1.8.2.2  jdolecek     | ',' error                     {$$ = AslDoError (); yyclearin;}
    747  1.1.1.8.2.2  jdolecek     ;
    748  1.1.1.8.2.2  jdolecek 
    749  1.1.1.8.2.2  jdolecek OptionalReference
    750  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateLeafOp (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
    751  1.1.1.8.2.2  jdolecek     | ','                           {$$ = TrCreateLeafOp (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
    752  1.1.1.8.2.2  jdolecek     | ',' TermArg                   {$$ = $2;}
    753  1.1.1.8.2.2  jdolecek     ;
    754  1.1.1.8.2.2  jdolecek 
    755  1.1.1.8.2.2  jdolecek OptionalReturnArg
    756  1.1.1.8.2.2  jdolecek     :                               {$$ = TrSetOpFlags (TrCreateLeafOp (PARSEOP_ZERO),
    757  1.1.1.8.2.2  jdolecek                                             OP_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
    758  1.1.1.8.2.2  jdolecek     | TermArg                       {$$ = $1;}
    759  1.1.1.8.2.2  jdolecek     ;
    760  1.1.1.8.2.2  jdolecek 
    761  1.1.1.8.2.2  jdolecek OptionalSerializeRuleKeyword
    762  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    763  1.1.1.8.2.2  jdolecek     | ','                           {$$ = NULL;}
    764  1.1.1.8.2.2  jdolecek     | ',' SerializeRuleKeyword      {$$ = $2;}
    765  1.1.1.8.2.2  jdolecek     ;
    766  1.1.1.8.2.2  jdolecek 
    767  1.1.1.8.2.2  jdolecek OptionalTermArg
    768  1.1.1.8.2.2  jdolecek     :                               {$$ = TrCreateLeafOp (PARSEOP_DEFAULT_ARG);}
    769  1.1.1.8.2.2  jdolecek     | TermArg                       {$$ = $1;}
    770  1.1.1.8.2.2  jdolecek     ;
    771  1.1.1.8.2.2  jdolecek 
    772  1.1.1.8.2.2  jdolecek OptionalWordConst
    773  1.1.1.8.2.2  jdolecek     :                               {$$ = NULL;}
    774  1.1.1.8.2.2  jdolecek     | WordConst                     {$$ = $1;}
    775  1.1.1.8.2.2  jdolecek     ;
    776