Home | History | Annotate | Line # | Download | only in compiler
aslrules.y revision 1.1.1.2
      1      1.1  christos NoEcho('
      2      1.1  christos /******************************************************************************
      3      1.1  christos  *
      4      1.1  christos  * Module Name: aslrules.y - Bison/Yacc production rules
      5      1.1  christos  *
      6      1.1  christos  *****************************************************************************/
      7      1.1  christos 
      8      1.1  christos /*
      9  1.1.1.2  christos  * Copyright (C) 2000 - 2015, 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  christos  * Production rules start here
     50      1.1  christos  *
     51      1.1  christos  ******************************************************************************/
     52      1.1  christos 
     53      1.1  christos /*
     54      1.1  christos  * ASL Names
     55      1.1  christos  *
     56      1.1  christos  * Root rule. Allow multiple #line directives before the definition block
     57      1.1  christos  * to handle output from preprocessors
     58      1.1  christos  */
     59      1.1  christos ASLCode
     60      1.1  christos     : DefinitionBlockTerm
     61      1.1  christos     | error                         {YYABORT; $$ = NULL;}
     62      1.1  christos     ;
     63      1.1  christos 
     64      1.1  christos /*
     65      1.1  christos  * Blocks, Data, and Opcodes
     66      1.1  christos  */
     67      1.1  christos 
     68      1.1  christos /*
     69      1.1  christos  * Note concerning support for "module-level code".
     70      1.1  christos  *
     71      1.1  christos  * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
     72      1.1  christos  * methods (the so-called module-level code.) This support was explicitly
     73      1.1  christos  * removed in ACPI 2.0, but this type of code continues to be created by
     74      1.1  christos  * BIOS vendors. In order to support the disassembly and recompilation of
     75      1.1  christos  * such code (and the porting of ASL code to iASL), iASL supports this
     76      1.1  christos  * code in violation of the current ACPI specification.
     77      1.1  christos  *
     78      1.1  christos  * The grammar change to support module-level code is to revert the
     79      1.1  christos  * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
     80      1.1  christos  * original use of {TermList} instead (see below.) This allows the use
     81      1.1  christos  * of Type1 and Type2 opcodes at module level.
     82      1.1  christos  */
     83      1.1  christos DefinitionBlockTerm
     84      1.1  christos     : PARSEOP_DEFINITIONBLOCK '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
     85      1.1  christos         String ','
     86      1.1  christos         String ','
     87      1.1  christos         ByteConst ','
     88      1.1  christos         String ','
     89      1.1  christos         String ','
     90      1.1  christos         DWordConst
     91      1.1  christos         ')'                         {TrSetEndLineNumber ($<n>3);}
     92      1.1  christos             '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
     93      1.1  christos     ;
     94      1.1  christos 
     95  1.1.1.2  christos     /*
     96  1.1.1.2  christos      * ASL Extensions: C-style math/logical operators and expressions.
     97  1.1.1.2  christos      * The implementation transforms these operators into the standard
     98  1.1.1.2  christos      * AML opcodes and syntax.
     99  1.1.1.2  christos      *
    100  1.1.1.2  christos      * Supported operators and precedence rules (high-to-low)
    101  1.1.1.2  christos      *
    102  1.1.1.2  christos      * NOTE: The operator precedence and associativity rules are
    103  1.1.1.2  christos      * implemented by the tokens in asltokens.y
    104  1.1.1.2  christos      *
    105  1.1.1.2  christos      * (left-to-right):
    106  1.1.1.2  christos      *  1)      ( ) expr++ expr--
    107  1.1.1.2  christos      *
    108  1.1.1.2  christos      * (right-to-left):
    109  1.1.1.2  christos      *  2)      ! ~
    110  1.1.1.2  christos      *
    111  1.1.1.2  christos      * (left-to-right):
    112  1.1.1.2  christos      *  3)      *   /   %
    113  1.1.1.2  christos      *  4)      +   -
    114  1.1.1.2  christos      *  5)      >>  <<
    115  1.1.1.2  christos      *  6)      <   >   <=  >=
    116  1.1.1.2  christos      *  7)      ==  !=
    117  1.1.1.2  christos      *  8)      &
    118  1.1.1.2  christos      *  9)      ^
    119  1.1.1.2  christos      *  10)     |
    120  1.1.1.2  christos      *  11)     &&
    121  1.1.1.2  christos      *  12)     ||
    122  1.1.1.2  christos      *
    123  1.1.1.2  christos      * (right-to-left):
    124  1.1.1.2  christos      *  13)     = += -= *= /= %= <<= >>= &= ^= |=
    125  1.1.1.2  christos      */
    126  1.1.1.2  christos Expression
    127  1.1.1.2  christos 
    128  1.1.1.2  christos     /* Unary operators */
    129  1.1.1.2  christos 
    130  1.1.1.2  christos     : PARSEOP_EXP_LOGICAL_NOT           {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
    131  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>2,1,$3);}
    132  1.1.1.2  christos     | PARSEOP_EXP_NOT                   {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
    133  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>2,2,$3,TrCreateNullTarget ());}
    134  1.1.1.2  christos 
    135  1.1.1.2  christos     | SuperName PARSEOP_EXP_INCREMENT   {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
    136  1.1.1.2  christos                                         {$$ = TrLinkChildren ($<n>3,1,$1);}
    137  1.1.1.2  christos     | SuperName PARSEOP_EXP_DECREMENT   {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
    138  1.1.1.2  christos                                         {$$ = TrLinkChildren ($<n>3,1,$1);}
    139  1.1.1.2  christos 
    140  1.1.1.2  christos     /* Binary operators: math and logical */
    141  1.1.1.2  christos 
    142  1.1.1.2  christos     | TermArg PARSEOP_EXP_ADD           {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
    143  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    144  1.1.1.2  christos     | TermArg PARSEOP_EXP_DIVIDE        {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
    145  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateNullTarget (),
    146  1.1.1.2  christos                                             TrCreateNullTarget ());}
    147  1.1.1.2  christos     | TermArg PARSEOP_EXP_MODULO        {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
    148  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    149  1.1.1.2  christos     | TermArg PARSEOP_EXP_MULTIPLY      {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
    150  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    151  1.1.1.2  christos     | TermArg PARSEOP_EXP_SHIFT_LEFT    {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
    152  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    153  1.1.1.2  christos     | TermArg PARSEOP_EXP_SHIFT_RIGHT   {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
    154  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    155  1.1.1.2  christos     | TermArg PARSEOP_EXP_SUBTRACT      {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
    156  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    157  1.1.1.2  christos 
    158  1.1.1.2  christos     | TermArg PARSEOP_EXP_AND           {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
    159  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    160  1.1.1.2  christos     | TermArg PARSEOP_EXP_OR            {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
    161  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    162  1.1.1.2  christos     | TermArg PARSEOP_EXP_XOR           {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
    163  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
    164  1.1.1.2  christos 
    165  1.1.1.2  christos     | TermArg PARSEOP_EXP_GREATER       {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
    166  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    167  1.1.1.2  christos     | TermArg PARSEOP_EXP_GREATER_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATEREQUAL);}
    168  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    169  1.1.1.2  christos     | TermArg PARSEOP_EXP_LESS          {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
    170  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    171  1.1.1.2  christos     | TermArg PARSEOP_EXP_LESS_EQUAL    {$<n>$ = TrCreateLeafNode (PARSEOP_LLESSEQUAL);}
    172  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    173  1.1.1.2  christos 
    174  1.1.1.2  christos     | TermArg PARSEOP_EXP_EQUAL         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
    175  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    176  1.1.1.2  christos     | TermArg PARSEOP_EXP_NOT_EQUAL     {$<n>$ = TrCreateLeafNode (PARSEOP_LNOTEQUAL);}
    177  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    178  1.1.1.2  christos 
    179  1.1.1.2  christos     | TermArg PARSEOP_EXP_LOGICAL_AND   {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
    180  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    181  1.1.1.2  christos     | TermArg PARSEOP_EXP_LOGICAL_OR    {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
    182  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
    183  1.1.1.2  christos 
    184  1.1.1.2  christos       /* Parentheses */
    185  1.1.1.2  christos 
    186  1.1.1.2  christos     | '(' TermArg ')'                   { $$ = $2;}
    187  1.1.1.2  christos     ;
    188  1.1.1.2  christos 
    189  1.1.1.2  christos EqualsTerm
    190  1.1.1.2  christos 
    191  1.1.1.2  christos     /* All assignment-type operations */
    192  1.1.1.2  christos 
    193  1.1.1.2  christos     : SuperName PARSEOP_EXP_EQUALS
    194  1.1.1.2  christos         TermArg                         {$$ = TrCreateAssignmentNode ($1, $3);}
    195  1.1.1.2  christos 
    196  1.1.1.2  christos     | TermArg PARSEOP_EXP_ADD_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
    197  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    198  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    199  1.1.1.2  christos 
    200  1.1.1.2  christos     | TermArg PARSEOP_EXP_DIV_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
    201  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateNullTarget (),
    202  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    203  1.1.1.2  christos 
    204  1.1.1.2  christos     | TermArg PARSEOP_EXP_MOD_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
    205  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    206  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    207  1.1.1.2  christos 
    208  1.1.1.2  christos     | TermArg PARSEOP_EXP_MUL_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
    209  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    210  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    211  1.1.1.2  christos 
    212  1.1.1.2  christos     | TermArg PARSEOP_EXP_SHL_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
    213  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    214  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    215  1.1.1.2  christos 
    216  1.1.1.2  christos     | TermArg PARSEOP_EXP_SHR_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
    217  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    218  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    219  1.1.1.2  christos 
    220  1.1.1.2  christos     | TermArg PARSEOP_EXP_SUB_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
    221  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    222  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    223  1.1.1.2  christos 
    224  1.1.1.2  christos     | TermArg PARSEOP_EXP_AND_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
    225  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    226  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    227  1.1.1.2  christos 
    228  1.1.1.2  christos     | TermArg PARSEOP_EXP_OR_EQ         {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
    229  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    230  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    231  1.1.1.2  christos 
    232  1.1.1.2  christos     | TermArg PARSEOP_EXP_XOR_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
    233  1.1.1.2  christos         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
    234  1.1.1.2  christos                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
    235  1.1.1.2  christos     ;
    236  1.1.1.2  christos 
    237  1.1.1.2  christos 
    238      1.1  christos /* ACPI 3.0 -- allow semicolons between terms */
    239      1.1  christos 
    240      1.1  christos TermList
    241      1.1  christos     :                               {$$ = NULL;}
    242      1.1  christos     | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    243      1.1  christos     | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
    244      1.1  christos     | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    245      1.1  christos     | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
    246      1.1  christos     ;
    247      1.1  christos 
    248      1.1  christos Term
    249      1.1  christos     : Object                        {}
    250      1.1  christos     | Type1Opcode                   {}
    251      1.1  christos     | Type2Opcode                   {}
    252  1.1.1.2  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    253  1.1.1.2  christos     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    254      1.1  christos     | Type2BufferOpcode             {}
    255      1.1  christos     | Type2BufferOrStringOpcode     {}
    256      1.1  christos     | error                         {$$ = AslDoError(); yyclearin;}
    257      1.1  christos     ;
    258      1.1  christos 
    259      1.1  christos CompilerDirective
    260      1.1  christos     : IncludeTerm                   {}
    261      1.1  christos     | ExternalTerm                  {}
    262      1.1  christos     ;
    263      1.1  christos 
    264      1.1  christos ObjectList
    265      1.1  christos     :                               {$$ = NULL;}
    266      1.1  christos     | ObjectList Object             {$$ = TrLinkPeerNode ($1,$2);}
    267      1.1  christos     | error                         {$$ = AslDoError(); yyclearin;}
    268      1.1  christos     ;
    269      1.1  christos 
    270      1.1  christos Object
    271      1.1  christos     : CompilerDirective             {}
    272      1.1  christos     | NamedObject                   {}
    273      1.1  christos     | NameSpaceModifier             {}
    274      1.1  christos     ;
    275      1.1  christos 
    276      1.1  christos DataObject
    277      1.1  christos     : BufferData                    {}
    278      1.1  christos     | PackageData                   {}
    279      1.1  christos     | IntegerData                   {}
    280      1.1  christos     | StringData                    {}
    281      1.1  christos     ;
    282      1.1  christos 
    283      1.1  christos BufferData
    284      1.1  christos     : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    285      1.1  christos     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    286      1.1  christos     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    287      1.1  christos     | BufferTerm                    {}
    288      1.1  christos     ;
    289      1.1  christos 
    290      1.1  christos PackageData
    291      1.1  christos     : PackageTerm                   {}
    292      1.1  christos     ;
    293      1.1  christos 
    294      1.1  christos IntegerData
    295      1.1  christos     : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    296      1.1  christos     | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    297      1.1  christos     | Integer                       {}
    298      1.1  christos     | ConstTerm                     {}
    299      1.1  christos     ;
    300      1.1  christos 
    301      1.1  christos StringData
    302      1.1  christos     : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    303      1.1  christos     | String                        {}
    304      1.1  christos     ;
    305      1.1  christos 
    306      1.1  christos NamedObject
    307      1.1  christos     : BankFieldTerm                 {}
    308      1.1  christos     | CreateBitFieldTerm            {}
    309      1.1  christos     | CreateByteFieldTerm           {}
    310      1.1  christos     | CreateDWordFieldTerm          {}
    311      1.1  christos     | CreateFieldTerm               {}
    312      1.1  christos     | CreateQWordFieldTerm          {}
    313      1.1  christos     | CreateWordFieldTerm           {}
    314      1.1  christos     | DataRegionTerm                {}
    315      1.1  christos     | DeviceTerm                    {}
    316      1.1  christos     | EventTerm                     {}
    317      1.1  christos     | FieldTerm                     {}
    318      1.1  christos     | FunctionTerm                  {}
    319      1.1  christos     | IndexFieldTerm                {}
    320      1.1  christos     | MethodTerm                    {}
    321      1.1  christos     | MutexTerm                     {}
    322      1.1  christos     | OpRegionTerm                  {}
    323      1.1  christos     | PowerResTerm                  {}
    324      1.1  christos     | ProcessorTerm                 {}
    325      1.1  christos     | ThermalZoneTerm               {}
    326      1.1  christos     ;
    327      1.1  christos 
    328      1.1  christos NameSpaceModifier
    329      1.1  christos     : AliasTerm                     {}
    330      1.1  christos     | NameTerm                      {}
    331      1.1  christos     | ScopeTerm                     {}
    332      1.1  christos     ;
    333      1.1  christos 
    334  1.1.1.2  christos MethodInvocationTerm
    335      1.1  christos     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
    336      1.1  christos         ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
    337      1.1  christos     ;
    338      1.1  christos 
    339      1.1  christos ArgList
    340      1.1  christos     :                               {$$ = NULL;}
    341      1.1  christos     | TermArg
    342      1.1  christos     | ArgList ','                   /* Allows a trailing comma at list end */
    343      1.1  christos     | ArgList ','
    344      1.1  christos         TermArg                     {$$ = TrLinkPeerNode ($1,$3);}
    345      1.1  christos     ;
    346      1.1  christos 
    347      1.1  christos /*
    348      1.1  christos Removed from TermArg due to reduce/reduce conflicts
    349      1.1  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    350      1.1  christos     | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    351      1.1  christos     | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    352      1.1  christos     | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    353      1.1  christos 
    354      1.1  christos */
    355      1.1  christos 
    356      1.1  christos TermArg
    357      1.1  christos     : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    358      1.1  christos     | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    359      1.1  christos     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    360      1.1  christos     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    361      1.1  christos     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
    362      1.1  christos     ;
    363      1.1  christos 
    364      1.1  christos Target
    365  1.1.1.2  christos     :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    366  1.1.1.2  christos     | ','                           {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
    367      1.1  christos     | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    368      1.1  christos     ;
    369      1.1  christos 
    370      1.1  christos RequiredTarget
    371      1.1  christos     : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
    372      1.1  christos     ;
    373      1.1  christos 
    374      1.1  christos SimpleTarget
    375      1.1  christos     : NameString                    {}
    376      1.1  christos     | LocalTerm                     {}
    377      1.1  christos     | ArgTerm                       {}
    378      1.1  christos     ;
    379      1.1  christos 
    380      1.1  christos /* Rules for specifying the type of one method argument or return value */
    381      1.1  christos 
    382      1.1  christos ParameterTypePackage
    383      1.1  christos     :                               {$$ = NULL;}
    384      1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    385      1.1  christos     | ParameterTypePackage ','
    386      1.1  christos         ObjectTypeKeyword           {$$ = TrLinkPeerNodes (2,$1,$3);}
    387      1.1  christos     ;
    388      1.1  christos 
    389      1.1  christos ParameterTypePackageList
    390      1.1  christos     :                               {$$ = NULL;}
    391      1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    392      1.1  christos     | '{' ParameterTypePackage '}'  {$$ = $2;}
    393      1.1  christos     ;
    394      1.1  christos 
    395      1.1  christos OptionalParameterTypePackage
    396      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    397      1.1  christos     | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
    398      1.1  christos     ;
    399      1.1  christos 
    400      1.1  christos /* Rules for specifying the types for method arguments */
    401      1.1  christos 
    402      1.1  christos ParameterTypesPackage
    403      1.1  christos     : ParameterTypePackageList      {$$ = $1;}
    404      1.1  christos     | ParameterTypesPackage ','
    405      1.1  christos         ParameterTypePackageList    {$$ = TrLinkPeerNodes (2,$1,$3);}
    406      1.1  christos     ;
    407      1.1  christos 
    408      1.1  christos ParameterTypesPackageList
    409      1.1  christos     :                               {$$ = NULL;}
    410      1.1  christos     | ObjectTypeKeyword             {$$ = $1;}
    411      1.1  christos     | '{' ParameterTypesPackage '}' {$$ = $2;}
    412      1.1  christos     ;
    413      1.1  christos 
    414      1.1  christos OptionalParameterTypesPackage
    415      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
    416      1.1  christos     | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
    417      1.1  christos     ;
    418      1.1  christos 
    419      1.1  christos 
    420      1.1  christos /* Opcode types */
    421      1.1  christos 
    422      1.1  christos Type1Opcode
    423      1.1  christos     : BreakTerm                     {}
    424      1.1  christos     | BreakPointTerm                {}
    425      1.1  christos     | ContinueTerm                  {}
    426      1.1  christos     | FatalTerm                     {}
    427      1.1  christos     | IfElseTerm                    {}
    428      1.1  christos     | LoadTerm                      {}
    429      1.1  christos     | NoOpTerm                      {}
    430      1.1  christos     | NotifyTerm                    {}
    431      1.1  christos     | ReleaseTerm                   {}
    432      1.1  christos     | ResetTerm                     {}
    433      1.1  christos     | ReturnTerm                    {}
    434      1.1  christos     | SignalTerm                    {}
    435      1.1  christos     | SleepTerm                     {}
    436      1.1  christos     | StallTerm                     {}
    437      1.1  christos     | SwitchTerm                    {}
    438      1.1  christos     | UnloadTerm                    {}
    439      1.1  christos     | WhileTerm                     {}
    440      1.1  christos     ;
    441      1.1  christos 
    442      1.1  christos Type2Opcode
    443      1.1  christos     : AcquireTerm                   {}
    444      1.1  christos     | CondRefOfTerm                 {}
    445      1.1  christos     | CopyObjectTerm                {}
    446      1.1  christos     | DerefOfTerm                   {}
    447      1.1  christos     | ObjectTypeTerm                {}
    448      1.1  christos     | RefOfTerm                     {}
    449      1.1  christos     | SizeOfTerm                    {}
    450      1.1  christos     | StoreTerm                     {}
    451  1.1.1.2  christos     | EqualsTerm                    {}
    452      1.1  christos     | TimerTerm                     {}
    453      1.1  christos     | WaitTerm                      {}
    454  1.1.1.2  christos     | MethodInvocationTerm          {}
    455      1.1  christos     ;
    456      1.1  christos 
    457      1.1  christos /*
    458      1.1  christos  * Type 3/4/5 opcodes
    459      1.1  christos  */
    460      1.1  christos 
    461      1.1  christos Type2IntegerOpcode                  /* "Type3" opcodes */
    462  1.1.1.2  christos     : Expression                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    463  1.1.1.2  christos     | AddTerm                       {}
    464      1.1  christos     | AndTerm                       {}
    465      1.1  christos     | DecTerm                       {}
    466      1.1  christos     | DivideTerm                    {}
    467      1.1  christos     | FindSetLeftBitTerm            {}
    468      1.1  christos     | FindSetRightBitTerm           {}
    469      1.1  christos     | FromBCDTerm                   {}
    470      1.1  christos     | IncTerm                       {}
    471      1.1  christos     | IndexTerm                     {}
    472      1.1  christos     | LAndTerm                      {}
    473      1.1  christos     | LEqualTerm                    {}
    474      1.1  christos     | LGreaterTerm                  {}
    475      1.1  christos     | LGreaterEqualTerm             {}
    476      1.1  christos     | LLessTerm                     {}
    477      1.1  christos     | LLessEqualTerm                {}
    478      1.1  christos     | LNotTerm                      {}
    479      1.1  christos     | LNotEqualTerm                 {}
    480      1.1  christos     | LoadTableTerm                 {}
    481      1.1  christos     | LOrTerm                       {}
    482      1.1  christos     | MatchTerm                     {}
    483      1.1  christos     | ModTerm                       {}
    484      1.1  christos     | MultiplyTerm                  {}
    485      1.1  christos     | NAndTerm                      {}
    486      1.1  christos     | NOrTerm                       {}
    487      1.1  christos     | NotTerm                       {}
    488      1.1  christos     | OrTerm                        {}
    489      1.1  christos     | ShiftLeftTerm                 {}
    490      1.1  christos     | ShiftRightTerm                {}
    491      1.1  christos     | SubtractTerm                  {}
    492      1.1  christos     | ToBCDTerm                     {}
    493      1.1  christos     | ToIntegerTerm                 {}
    494      1.1  christos     | XOrTerm                       {}
    495      1.1  christos     ;
    496      1.1  christos 
    497      1.1  christos Type2StringOpcode                   /* "Type4" Opcodes */
    498      1.1  christos     : ToDecimalStringTerm           {}
    499      1.1  christos     | ToHexStringTerm               {}
    500      1.1  christos     | ToStringTerm                  {}
    501      1.1  christos     ;
    502      1.1  christos 
    503      1.1  christos Type2BufferOpcode                   /* "Type5" Opcodes */
    504      1.1  christos     : ToBufferTerm                  {}
    505      1.1  christos     | ConcatResTerm                 {}
    506      1.1  christos     ;
    507      1.1  christos 
    508      1.1  christos Type2BufferOrStringOpcode
    509  1.1.1.2  christos     : ConcatTerm                    {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
    510  1.1.1.2  christos     | PrintfTerm                    {}
    511  1.1.1.2  christos     | FprintfTerm                   {}
    512      1.1  christos     | MidTerm                       {}
    513      1.1  christos     ;
    514      1.1  christos 
    515      1.1  christos /*
    516      1.1  christos  * A type 3 opcode evaluates to an Integer and cannot have a destination operand
    517      1.1  christos  */
    518      1.1  christos 
    519      1.1  christos Type3Opcode
    520      1.1  christos     : EISAIDTerm                    {}
    521      1.1  christos     ;
    522      1.1  christos 
    523      1.1  christos /* Obsolete
    524      1.1  christos Type4Opcode
    525      1.1  christos     : ConcatTerm                    {}
    526      1.1  christos     | ToDecimalStringTerm           {}
    527      1.1  christos     | ToHexStringTerm               {}
    528      1.1  christos     | MidTerm                       {}
    529      1.1  christos     | ToStringTerm                  {}
    530      1.1  christos     ;
    531      1.1  christos */
    532      1.1  christos 
    533      1.1  christos 
    534      1.1  christos Type5Opcode
    535      1.1  christos     : ResourceTemplateTerm          {}
    536      1.1  christos     | UnicodeTerm                   {}
    537  1.1.1.2  christos     | ToPLDTerm                     {}
    538      1.1  christos     | ToUUIDTerm                    {}
    539      1.1  christos     ;
    540      1.1  christos 
    541      1.1  christos Type6Opcode
    542      1.1  christos     : RefOfTerm                     {}
    543      1.1  christos     | DerefOfTerm                   {}
    544      1.1  christos     | IndexTerm                     {}
    545  1.1.1.2  christos     | MethodInvocationTerm          {}
    546      1.1  christos     ;
    547      1.1  christos 
    548      1.1  christos IncludeTerm
    549      1.1  christos     : PARSEOP_INCLUDE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
    550      1.1  christos         String  ')'                 {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
    551      1.1  christos         TermList
    552      1.1  christos         IncludeEndTerm              {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
    553      1.1  christos     ;
    554      1.1  christos 
    555      1.1  christos IncludeEndTerm
    556      1.1  christos     : PARSEOP_INCLUDE_END           {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
    557      1.1  christos     ;
    558      1.1  christos 
    559      1.1  christos ExternalTerm
    560      1.1  christos     : PARSEOP_EXTERNAL '('
    561      1.1  christos         NameString
    562      1.1  christos         OptionalObjectTypeKeyword
    563      1.1  christos         OptionalParameterTypePackage
    564      1.1  christos         OptionalParameterTypesPackage
    565      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
    566      1.1  christos     | PARSEOP_EXTERNAL '('
    567      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    568      1.1  christos     ;
    569      1.1  christos 
    570      1.1  christos 
    571      1.1  christos /******* Named Objects *******************************************************/
    572      1.1  christos 
    573      1.1  christos 
    574      1.1  christos BankFieldTerm
    575      1.1  christos     : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
    576      1.1  christos         NameString
    577      1.1  christos         NameStringItem
    578      1.1  christos         TermArgItem
    579      1.1  christos         ',' AccessTypeKeyword
    580      1.1  christos         ',' LockRuleKeyword
    581      1.1  christos         ',' UpdateRuleKeyword
    582      1.1  christos         ')' '{'
    583      1.1  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
    584      1.1  christos     | PARSEOP_BANKFIELD '('
    585      1.1  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
    586      1.1  christos     ;
    587      1.1  christos 
    588      1.1  christos FieldUnitList
    589      1.1  christos     :                               {$$ = NULL;}
    590      1.1  christos     | FieldUnit
    591      1.1  christos     | FieldUnitList ','             /* Allows a trailing comma at list end */
    592      1.1  christos     | FieldUnitList ','
    593      1.1  christos         FieldUnit                   {$$ = TrLinkPeerNode ($1,$3);}
    594      1.1  christos     ;
    595      1.1  christos 
    596      1.1  christos FieldUnit
    597      1.1  christos     : FieldUnitEntry                {}
    598      1.1  christos     | OffsetTerm                    {}
    599      1.1  christos     | AccessAsTerm                  {}
    600      1.1  christos     | ConnectionTerm                {}
    601      1.1  christos     ;
    602      1.1  christos 
    603      1.1  christos FieldUnitEntry
    604      1.1  christos     : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
    605      1.1  christos     | NameSeg ','
    606      1.1  christos         AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
    607      1.1  christos     ;
    608      1.1  christos 
    609      1.1  christos OffsetTerm
    610      1.1  christos     : PARSEOP_OFFSET '('
    611      1.1  christos         AmlPackageLengthTerm
    612      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
    613      1.1  christos     | PARSEOP_OFFSET '('
    614      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    615      1.1  christos     ;
    616      1.1  christos 
    617      1.1  christos AccessAsTerm
    618      1.1  christos     : PARSEOP_ACCESSAS '('
    619      1.1  christos         AccessTypeKeyword
    620      1.1  christos         OptionalAccessAttribTerm
    621      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
    622      1.1  christos     | PARSEOP_ACCESSAS '('
    623      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    624      1.1  christos     ;
    625      1.1  christos 
    626      1.1  christos ConnectionTerm
    627      1.1  christos     : PARSEOP_CONNECTION '('
    628      1.1  christos         NameString
    629      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
    630      1.1  christos     | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
    631      1.1  christos         ResourceMacroTerm
    632      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3, 1,
    633      1.1  christos                                             TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
    634      1.1  christos                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    635      1.1  christos                                                 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    636      1.1  christos                                                 $4));}
    637      1.1  christos     | PARSEOP_CONNECTION '('
    638      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    639      1.1  christos     ;
    640      1.1  christos 
    641      1.1  christos CreateBitFieldTerm
    642      1.1  christos     : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
    643      1.1  christos         TermArg
    644      1.1  christos         TermArgItem
    645      1.1  christos         NameStringItem
    646      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    647      1.1  christos     | PARSEOP_CREATEBITFIELD '('
    648      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    649      1.1  christos     ;
    650      1.1  christos 
    651      1.1  christos CreateByteFieldTerm
    652      1.1  christos     : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
    653      1.1  christos         TermArg
    654      1.1  christos         TermArgItem
    655      1.1  christos         NameStringItem
    656      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    657      1.1  christos     | PARSEOP_CREATEBYTEFIELD '('
    658      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    659      1.1  christos     ;
    660      1.1  christos 
    661      1.1  christos CreateDWordFieldTerm
    662      1.1  christos     : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
    663      1.1  christos         TermArg
    664      1.1  christos         TermArgItem
    665      1.1  christos         NameStringItem
    666      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    667      1.1  christos     | PARSEOP_CREATEDWORDFIELD '('
    668      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    669      1.1  christos     ;
    670      1.1  christos 
    671      1.1  christos CreateFieldTerm
    672      1.1  christos     : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
    673      1.1  christos         TermArg
    674      1.1  christos         TermArgItem
    675      1.1  christos         TermArgItem
    676      1.1  christos         NameStringItem
    677      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
    678      1.1  christos     | PARSEOP_CREATEFIELD '('
    679      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    680      1.1  christos     ;
    681      1.1  christos 
    682      1.1  christos CreateQWordFieldTerm
    683      1.1  christos     : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
    684      1.1  christos         TermArg
    685      1.1  christos         TermArgItem
    686      1.1  christos         NameStringItem
    687      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    688      1.1  christos     | PARSEOP_CREATEQWORDFIELD '('
    689      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    690      1.1  christos     ;
    691      1.1  christos 
    692      1.1  christos CreateWordFieldTerm
    693      1.1  christos     : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
    694      1.1  christos         TermArg
    695      1.1  christos         TermArgItem
    696      1.1  christos         NameStringItem
    697      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
    698      1.1  christos     | PARSEOP_CREATEWORDFIELD '('
    699      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    700      1.1  christos     ;
    701      1.1  christos 
    702      1.1  christos DataRegionTerm
    703      1.1  christos     : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
    704      1.1  christos         NameString
    705      1.1  christos         TermArgItem
    706      1.1  christos         TermArgItem
    707      1.1  christos         TermArgItem
    708      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
    709      1.1  christos     | PARSEOP_DATATABLEREGION '('
    710      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    711      1.1  christos     ;
    712      1.1  christos 
    713      1.1  christos DeviceTerm
    714      1.1  christos     : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
    715      1.1  christos         NameString
    716      1.1  christos         ')' '{'
    717      1.1  christos             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
    718      1.1  christos     | PARSEOP_DEVICE '('
    719      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    720      1.1  christos     ;
    721      1.1  christos 
    722      1.1  christos EventTerm
    723      1.1  christos     : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
    724      1.1  christos         NameString
    725      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
    726      1.1  christos     | PARSEOP_EVENT '('
    727      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    728      1.1  christos     ;
    729      1.1  christos 
    730      1.1  christos FieldTerm
    731      1.1  christos     : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
    732      1.1  christos         NameString
    733      1.1  christos         ',' AccessTypeKeyword
    734      1.1  christos         ',' LockRuleKeyword
    735      1.1  christos         ',' UpdateRuleKeyword
    736      1.1  christos         ')' '{'
    737      1.1  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
    738      1.1  christos     | PARSEOP_FIELD '('
    739      1.1  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
    740      1.1  christos     ;
    741      1.1  christos 
    742      1.1  christos FunctionTerm
    743      1.1  christos     : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
    744      1.1  christos         NameString
    745      1.1  christos         OptionalParameterTypePackage
    746      1.1  christos         OptionalParameterTypesPackage
    747      1.1  christos         ')' '{'
    748      1.1  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
    749      1.1  christos                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
    750      1.1  christos                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
    751      1.1  christos                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
    752      1.1  christos     | PARSEOP_FUNCTION '('
    753      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    754      1.1  christos     ;
    755      1.1  christos 
    756      1.1  christos IndexFieldTerm
    757      1.1  christos     : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
    758      1.1  christos         NameString
    759      1.1  christos         NameStringItem
    760      1.1  christos         ',' AccessTypeKeyword
    761      1.1  christos         ',' LockRuleKeyword
    762      1.1  christos         ',' UpdateRuleKeyword
    763      1.1  christos         ')' '{'
    764      1.1  christos             FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
    765      1.1  christos     | PARSEOP_INDEXFIELD '('
    766      1.1  christos         error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
    767      1.1  christos     ;
    768      1.1  christos 
    769      1.1  christos MethodTerm
    770      1.1  christos     : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
    771      1.1  christos         NameString
    772      1.1  christos         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
    773      1.1  christos         OptionalSerializeRuleKeyword
    774      1.1  christos         OptionalByteConstExpr
    775      1.1  christos         OptionalParameterTypePackage
    776      1.1  christos         OptionalParameterTypesPackage
    777      1.1  christos         ')' '{'
    778      1.1  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
    779      1.1  christos     | PARSEOP_METHOD '('
    780      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    781      1.1  christos     ;
    782      1.1  christos 
    783      1.1  christos MutexTerm
    784      1.1  christos     : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
    785      1.1  christos         NameString
    786      1.1  christos         ',' ByteConstExpr
    787      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
    788      1.1  christos     | PARSEOP_MUTEX '('
    789      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    790      1.1  christos     ;
    791      1.1  christos 
    792      1.1  christos OpRegionTerm
    793      1.1  christos     : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
    794      1.1  christos         NameString
    795      1.1  christos         ',' OpRegionSpaceIdTerm
    796      1.1  christos         TermArgItem
    797      1.1  christos         TermArgItem
    798      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
    799      1.1  christos     | PARSEOP_OPERATIONREGION '('
    800      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    801      1.1  christos     ;
    802      1.1  christos 
    803      1.1  christos OpRegionSpaceIdTerm
    804      1.1  christos     : RegionSpaceKeyword            {}
    805      1.1  christos     | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
    806      1.1  christos     ;
    807      1.1  christos 
    808      1.1  christos PowerResTerm
    809      1.1  christos     : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
    810      1.1  christos         NameString
    811      1.1  christos         ',' ByteConstExpr
    812      1.1  christos         ',' WordConstExpr
    813      1.1  christos         ')' '{'
    814      1.1  christos             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
    815      1.1  christos     | PARSEOP_POWERRESOURCE '('
    816      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    817      1.1  christos     ;
    818      1.1  christos 
    819      1.1  christos ProcessorTerm
    820      1.1  christos     : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
    821      1.1  christos         NameString
    822      1.1  christos         ',' ByteConstExpr
    823      1.1  christos         OptionalDWordConstExpr
    824      1.1  christos         OptionalByteConstExpr
    825      1.1  christos         ')' '{'
    826      1.1  christos             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
    827      1.1  christos     | PARSEOP_PROCESSOR '('
    828      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    829      1.1  christos     ;
    830      1.1  christos 
    831      1.1  christos ThermalZoneTerm
    832      1.1  christos     : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
    833      1.1  christos         NameString
    834      1.1  christos         ')' '{'
    835      1.1  christos             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
    836      1.1  christos     | PARSEOP_THERMALZONE '('
    837      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    838      1.1  christos     ;
    839      1.1  christos 
    840      1.1  christos 
    841      1.1  christos /******* Namespace modifiers *************************************************/
    842      1.1  christos 
    843      1.1  christos 
    844      1.1  christos AliasTerm
    845      1.1  christos     : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
    846      1.1  christos         NameString
    847      1.1  christos         NameStringItem
    848      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
    849      1.1  christos     | PARSEOP_ALIAS '('
    850      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    851      1.1  christos     ;
    852      1.1  christos 
    853      1.1  christos NameTerm
    854      1.1  christos     : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
    855      1.1  christos         NameString
    856      1.1  christos         ',' DataObject
    857      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
    858      1.1  christos     | PARSEOP_NAME '('
    859      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    860      1.1  christos     ;
    861      1.1  christos 
    862      1.1  christos ScopeTerm
    863      1.1  christos     : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
    864      1.1  christos         NameString
    865      1.1  christos         ')' '{'
    866      1.1  christos             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
    867      1.1  christos     | PARSEOP_SCOPE '('
    868      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    869      1.1  christos     ;
    870      1.1  christos 
    871      1.1  christos 
    872      1.1  christos /******* Type 1 opcodes *******************************************************/
    873      1.1  christos 
    874      1.1  christos 
    875      1.1  christos BreakTerm
    876      1.1  christos     : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
    877      1.1  christos     ;
    878      1.1  christos 
    879      1.1  christos BreakPointTerm
    880      1.1  christos     : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
    881      1.1  christos     ;
    882      1.1  christos 
    883      1.1  christos ContinueTerm
    884      1.1  christos     : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
    885      1.1  christos     ;
    886      1.1  christos 
    887      1.1  christos FatalTerm
    888      1.1  christos     : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
    889      1.1  christos         ByteConstExpr
    890      1.1  christos         ',' DWordConstExpr
    891      1.1  christos         TermArgItem
    892      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    893      1.1  christos     | PARSEOP_FATAL '('
    894      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    895      1.1  christos     ;
    896      1.1  christos 
    897      1.1  christos IfElseTerm
    898      1.1  christos     : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
    899      1.1  christos     ;
    900      1.1  christos 
    901      1.1  christos IfTerm
    902      1.1  christos     : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    903      1.1  christos         TermArg
    904      1.1  christos         ')' '{'
    905      1.1  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    906      1.1  christos 
    907      1.1  christos     | PARSEOP_IF '('
    908      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    909      1.1  christos     ;
    910      1.1  christos 
    911      1.1  christos ElseTerm
    912      1.1  christos     :                               {$$ = NULL;}
    913      1.1  christos     | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    914      1.1  christos         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
    915      1.1  christos 
    916      1.1  christos     | PARSEOP_ELSE '{'
    917      1.1  christos         error '}'                   {$$ = AslDoError(); yyclearin;}
    918      1.1  christos 
    919      1.1  christos     | PARSEOP_ELSE
    920      1.1  christos         error                       {$$ = AslDoError(); yyclearin;}
    921      1.1  christos 
    922      1.1  christos     | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
    923      1.1  christos         TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
    924      1.1  christos         ')' '{'
    925      1.1  christos             TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
    926      1.1  christos         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
    927      1.1  christos                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
    928      1.1  christos 
    929      1.1  christos     | PARSEOP_ELSEIF '('
    930      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    931      1.1  christos 
    932      1.1  christos     | PARSEOP_ELSEIF
    933      1.1  christos         error                       {$$ = AslDoError(); yyclearin;}
    934      1.1  christos     ;
    935      1.1  christos 
    936      1.1  christos LoadTerm
    937      1.1  christos     : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
    938      1.1  christos         NameString
    939      1.1  christos         RequiredTarget
    940      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    941      1.1  christos     | PARSEOP_LOAD '('
    942      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    943      1.1  christos     ;
    944      1.1  christos 
    945      1.1  christos NoOpTerm
    946      1.1  christos     : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
    947      1.1  christos     ;
    948      1.1  christos 
    949      1.1  christos NotifyTerm
    950      1.1  christos     : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
    951      1.1  christos         SuperName
    952      1.1  christos         TermArgItem
    953      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
    954      1.1  christos     | PARSEOP_NOTIFY '('
    955      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    956      1.1  christos     ;
    957      1.1  christos 
    958      1.1  christos ReleaseTerm
    959      1.1  christos     : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
    960      1.1  christos         SuperName
    961      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    962      1.1  christos     | PARSEOP_RELEASE '('
    963      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    964      1.1  christos     ;
    965      1.1  christos 
    966      1.1  christos ResetTerm
    967      1.1  christos     : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
    968      1.1  christos         SuperName
    969      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    970      1.1  christos     | PARSEOP_RESET '('
    971      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    972      1.1  christos     ;
    973      1.1  christos 
    974      1.1  christos ReturnTerm
    975      1.1  christos     : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
    976      1.1  christos         OptionalReturnArg
    977      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    978      1.1  christos     | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
    979      1.1  christos     | PARSEOP_RETURN '('
    980      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    981      1.1  christos     ;
    982      1.1  christos 
    983      1.1  christos SignalTerm
    984      1.1  christos     : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
    985      1.1  christos         SuperName
    986      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    987      1.1  christos     | PARSEOP_SIGNAL '('
    988      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    989      1.1  christos     ;
    990      1.1  christos 
    991      1.1  christos SleepTerm
    992      1.1  christos     : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
    993      1.1  christos         TermArg
    994      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
    995      1.1  christos     | PARSEOP_SLEEP '('
    996      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
    997      1.1  christos     ;
    998      1.1  christos 
    999      1.1  christos StallTerm
   1000      1.1  christos     : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
   1001      1.1  christos         TermArg
   1002      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1003      1.1  christos     | PARSEOP_STALL '('
   1004      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1005      1.1  christos     ;
   1006      1.1  christos 
   1007      1.1  christos SwitchTerm
   1008      1.1  christos     : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
   1009      1.1  christos         TermArg
   1010      1.1  christos         ')' '{'
   1011      1.1  christos             CaseDefaultTermList '}'
   1012      1.1  christos                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1013      1.1  christos     | PARSEOP_SWITCH '('
   1014      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1015      1.1  christos     ;
   1016      1.1  christos 
   1017      1.1  christos /*
   1018      1.1  christos  * Case-Default list; allow only one Default term and unlimited Case terms
   1019      1.1  christos  */
   1020      1.1  christos 
   1021      1.1  christos CaseDefaultTermList
   1022      1.1  christos     :                               {$$ = NULL;}
   1023      1.1  christos     | CaseTerm  {}
   1024      1.1  christos     | DefaultTerm   {}
   1025      1.1  christos     | CaseDefaultTermList
   1026      1.1  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
   1027      1.1  christos     | CaseDefaultTermList
   1028      1.1  christos         DefaultTerm                 {$$ = TrLinkPeerNode ($1,$2);}
   1029      1.1  christos 
   1030      1.1  christos /* Original - attempts to force zero or one default term within the switch */
   1031      1.1  christos 
   1032      1.1  christos /*
   1033      1.1  christos CaseDefaultTermList
   1034      1.1  christos     :                               {$$ = NULL;}
   1035      1.1  christos     | CaseTermList
   1036      1.1  christos         DefaultTerm
   1037      1.1  christos         CaseTermList                {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
   1038      1.1  christos     | CaseTermList
   1039      1.1  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
   1040      1.1  christos     ;
   1041      1.1  christos 
   1042      1.1  christos CaseTermList
   1043      1.1  christos     :                               {$$ = NULL;}
   1044      1.1  christos     | CaseTerm                      {}
   1045      1.1  christos     | CaseTermList
   1046      1.1  christos         CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
   1047      1.1  christos     ;
   1048      1.1  christos */
   1049      1.1  christos 
   1050      1.1  christos CaseTerm
   1051      1.1  christos     : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
   1052      1.1  christos         DataObject
   1053      1.1  christos         ')' '{'
   1054      1.1  christos             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1055      1.1  christos     | PARSEOP_CASE '('
   1056      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1057      1.1  christos     ;
   1058      1.1  christos 
   1059      1.1  christos DefaultTerm
   1060      1.1  christos     : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
   1061      1.1  christos         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
   1062      1.1  christos     | PARSEOP_DEFAULT '{'
   1063      1.1  christos         error '}'                   {$$ = AslDoError(); yyclearin;}
   1064      1.1  christos     ;
   1065      1.1  christos 
   1066      1.1  christos UnloadTerm
   1067      1.1  christos     : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
   1068      1.1  christos         SuperName
   1069      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1070      1.1  christos     | PARSEOP_UNLOAD '('
   1071      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1072      1.1  christos     ;
   1073      1.1  christos 
   1074      1.1  christos WhileTerm
   1075      1.1  christos     : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
   1076      1.1  christos         TermArg
   1077      1.1  christos         ')' '{' TermList '}'
   1078      1.1  christos                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   1079      1.1  christos     | PARSEOP_WHILE '('
   1080      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1081      1.1  christos     ;
   1082      1.1  christos 
   1083      1.1  christos 
   1084      1.1  christos /******* Type 2 opcodes *******************************************************/
   1085      1.1  christos 
   1086      1.1  christos AcquireTerm
   1087      1.1  christos     : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
   1088      1.1  christos         SuperName
   1089      1.1  christos         ',' WordConstExpr
   1090      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
   1091      1.1  christos     | PARSEOP_ACQUIRE '('
   1092      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1093      1.1  christos     ;
   1094      1.1  christos 
   1095      1.1  christos AddTerm
   1096      1.1  christos     : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
   1097      1.1  christos         TermArg
   1098      1.1  christos         TermArgItem
   1099      1.1  christos         Target
   1100      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1101      1.1  christos     | PARSEOP_ADD '('
   1102      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1103      1.1  christos     ;
   1104      1.1  christos 
   1105      1.1  christos AndTerm
   1106      1.1  christos     : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
   1107      1.1  christos         TermArg
   1108      1.1  christos         TermArgItem
   1109      1.1  christos         Target
   1110      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1111      1.1  christos     | PARSEOP_AND '('
   1112      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1113      1.1  christos     ;
   1114      1.1  christos 
   1115      1.1  christos ConcatTerm
   1116      1.1  christos     : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
   1117      1.1  christos         TermArg
   1118      1.1  christos         TermArgItem
   1119      1.1  christos         Target
   1120      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1121      1.1  christos     | PARSEOP_CONCATENATE '('
   1122      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1123      1.1  christos     ;
   1124      1.1  christos 
   1125      1.1  christos ConcatResTerm
   1126      1.1  christos     : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
   1127      1.1  christos         TermArg
   1128      1.1  christos         TermArgItem
   1129      1.1  christos         Target
   1130      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1131      1.1  christos     | PARSEOP_CONCATENATERESTEMPLATE '('
   1132      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1133      1.1  christos     ;
   1134      1.1  christos 
   1135      1.1  christos CondRefOfTerm
   1136      1.1  christos     : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
   1137      1.1  christos         SuperName
   1138      1.1  christos         Target
   1139      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1140      1.1  christos     | PARSEOP_CONDREFOF '('
   1141      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1142      1.1  christos     ;
   1143      1.1  christos 
   1144      1.1  christos CopyObjectTerm
   1145      1.1  christos     : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
   1146      1.1  christos         TermArg
   1147      1.1  christos         ',' SimpleTarget
   1148      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
   1149      1.1  christos     | PARSEOP_COPYOBJECT '('
   1150      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1151      1.1  christos     ;
   1152      1.1  christos 
   1153      1.1  christos DecTerm
   1154      1.1  christos     : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
   1155      1.1  christos         SuperName
   1156      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1157      1.1  christos     | PARSEOP_DECREMENT '('
   1158      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1159      1.1  christos     ;
   1160      1.1  christos 
   1161      1.1  christos DerefOfTerm
   1162      1.1  christos     : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
   1163      1.1  christos         TermArg
   1164      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1165      1.1  christos     | PARSEOP_DEREFOF '('
   1166      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1167      1.1  christos     ;
   1168      1.1  christos 
   1169      1.1  christos DivideTerm
   1170      1.1  christos     : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
   1171      1.1  christos         TermArg
   1172      1.1  christos         TermArgItem
   1173      1.1  christos         Target
   1174      1.1  christos         Target
   1175      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
   1176      1.1  christos     | PARSEOP_DIVIDE '('
   1177      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1178      1.1  christos     ;
   1179      1.1  christos 
   1180      1.1  christos FindSetLeftBitTerm
   1181      1.1  christos     : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
   1182      1.1  christos         TermArg
   1183      1.1  christos         Target
   1184      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1185      1.1  christos     | PARSEOP_FINDSETLEFTBIT '('
   1186      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1187      1.1  christos     ;
   1188      1.1  christos 
   1189      1.1  christos FindSetRightBitTerm
   1190      1.1  christos     : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
   1191      1.1  christos         TermArg
   1192      1.1  christos         Target
   1193      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1194      1.1  christos     | PARSEOP_FINDSETRIGHTBIT '('
   1195      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1196      1.1  christos     ;
   1197      1.1  christos 
   1198      1.1  christos FromBCDTerm
   1199      1.1  christos     : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
   1200      1.1  christos         TermArg
   1201      1.1  christos         Target
   1202      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1203      1.1  christos     | PARSEOP_FROMBCD '('
   1204      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1205      1.1  christos     ;
   1206      1.1  christos 
   1207      1.1  christos IncTerm
   1208      1.1  christos     : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
   1209      1.1  christos         SuperName
   1210      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1211      1.1  christos     | PARSEOP_INCREMENT '('
   1212      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1213      1.1  christos     ;
   1214      1.1  christos 
   1215      1.1  christos IndexTerm
   1216      1.1  christos     : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
   1217      1.1  christos         TermArg
   1218      1.1  christos         TermArgItem
   1219      1.1  christos         Target
   1220      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1221      1.1  christos     | PARSEOP_INDEX '('
   1222      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1223      1.1  christos     ;
   1224      1.1  christos 
   1225      1.1  christos LAndTerm
   1226      1.1  christos     : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
   1227      1.1  christos         TermArg
   1228      1.1  christos         TermArgItem
   1229      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1230      1.1  christos     | PARSEOP_LAND '('
   1231      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1232      1.1  christos     ;
   1233      1.1  christos 
   1234      1.1  christos LEqualTerm
   1235      1.1  christos     : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1236      1.1  christos         TermArg
   1237      1.1  christos         TermArgItem
   1238      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1239      1.1  christos     | PARSEOP_LEQUAL '('
   1240      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1241      1.1  christos     ;
   1242      1.1  christos 
   1243      1.1  christos LGreaterTerm
   1244      1.1  christos     : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1245      1.1  christos         TermArg
   1246      1.1  christos         TermArgItem
   1247      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1248      1.1  christos     | PARSEOP_LGREATER '('
   1249      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1250      1.1  christos     ;
   1251      1.1  christos 
   1252      1.1  christos LGreaterEqualTerm
   1253      1.1  christos     : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1254      1.1  christos         TermArg
   1255      1.1  christos         TermArgItem
   1256      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1257      1.1  christos     | PARSEOP_LGREATEREQUAL '('
   1258      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1259      1.1  christos     ;
   1260      1.1  christos 
   1261      1.1  christos LLessTerm
   1262      1.1  christos     : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
   1263      1.1  christos         TermArg
   1264      1.1  christos         TermArgItem
   1265      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1266      1.1  christos     | PARSEOP_LLESS '('
   1267      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1268      1.1  christos     ;
   1269      1.1  christos 
   1270      1.1  christos LLessEqualTerm
   1271      1.1  christos     : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
   1272      1.1  christos         TermArg
   1273      1.1  christos         TermArgItem
   1274      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1275      1.1  christos     | PARSEOP_LLESSEQUAL '('
   1276      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1277      1.1  christos     ;
   1278      1.1  christos 
   1279      1.1  christos LNotTerm
   1280      1.1  christos     : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
   1281      1.1  christos         TermArg
   1282      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1283      1.1  christos     | PARSEOP_LNOT '('
   1284      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1285      1.1  christos     ;
   1286      1.1  christos 
   1287      1.1  christos LNotEqualTerm
   1288      1.1  christos     : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
   1289      1.1  christos         TermArg
   1290      1.1  christos         TermArgItem
   1291      1.1  christos         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
   1292      1.1  christos     | PARSEOP_LNOTEQUAL '('
   1293      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1294      1.1  christos     ;
   1295      1.1  christos 
   1296      1.1  christos LoadTableTerm
   1297      1.1  christos     : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
   1298      1.1  christos         TermArg
   1299      1.1  christos         TermArgItem
   1300      1.1  christos         TermArgItem
   1301      1.1  christos         OptionalListString
   1302      1.1  christos         OptionalListString
   1303      1.1  christos         OptionalReference
   1304      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
   1305      1.1  christos     | PARSEOP_LOADTABLE '('
   1306      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1307      1.1  christos     ;
   1308      1.1  christos 
   1309      1.1  christos LOrTerm
   1310      1.1  christos     : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
   1311      1.1  christos         TermArg
   1312      1.1  christos         TermArgItem
   1313      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1314      1.1  christos     | PARSEOP_LOR '('
   1315      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1316      1.1  christos     ;
   1317      1.1  christos 
   1318      1.1  christos MatchTerm
   1319      1.1  christos     : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
   1320      1.1  christos         TermArg
   1321      1.1  christos         ',' MatchOpKeyword
   1322      1.1  christos         TermArgItem
   1323      1.1  christos         ',' MatchOpKeyword
   1324      1.1  christos         TermArgItem
   1325      1.1  christos         TermArgItem
   1326      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
   1327      1.1  christos     | PARSEOP_MATCH '('
   1328      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1329      1.1  christos     ;
   1330      1.1  christos 
   1331      1.1  christos MidTerm
   1332      1.1  christos     : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
   1333      1.1  christos         TermArg
   1334      1.1  christos         TermArgItem
   1335      1.1  christos         TermArgItem
   1336      1.1  christos         Target
   1337      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
   1338      1.1  christos     | PARSEOP_MID '('
   1339      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1340      1.1  christos     ;
   1341      1.1  christos 
   1342      1.1  christos ModTerm
   1343      1.1  christos     : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
   1344      1.1  christos         TermArg
   1345      1.1  christos         TermArgItem
   1346      1.1  christos         Target
   1347      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1348      1.1  christos     | PARSEOP_MOD '('
   1349      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1350      1.1  christos     ;
   1351      1.1  christos 
   1352      1.1  christos MultiplyTerm
   1353      1.1  christos     : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
   1354      1.1  christos         TermArg
   1355      1.1  christos         TermArgItem
   1356      1.1  christos         Target
   1357      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1358      1.1  christos     | PARSEOP_MULTIPLY '('
   1359      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1360      1.1  christos     ;
   1361      1.1  christos 
   1362      1.1  christos NAndTerm
   1363      1.1  christos     : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
   1364      1.1  christos         TermArg
   1365      1.1  christos         TermArgItem
   1366      1.1  christos         Target
   1367      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1368      1.1  christos     | PARSEOP_NAND '('
   1369      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1370      1.1  christos     ;
   1371      1.1  christos 
   1372      1.1  christos NOrTerm
   1373      1.1  christos     : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
   1374      1.1  christos         TermArg
   1375      1.1  christos         TermArgItem
   1376      1.1  christos         Target
   1377      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1378      1.1  christos     | PARSEOP_NOR '('
   1379      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1380      1.1  christos     ;
   1381      1.1  christos 
   1382      1.1  christos NotTerm
   1383      1.1  christos     : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
   1384      1.1  christos         TermArg
   1385      1.1  christos         Target
   1386      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1387      1.1  christos     | PARSEOP_NOT '('
   1388      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1389      1.1  christos     ;
   1390      1.1  christos 
   1391      1.1  christos ObjectTypeTerm
   1392      1.1  christos     : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
   1393      1.1  christos         ObjectTypeName
   1394      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1395      1.1  christos     | PARSEOP_OBJECTTYPE '('
   1396      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1397      1.1  christos     ;
   1398      1.1  christos 
   1399      1.1  christos OrTerm
   1400      1.1  christos     : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
   1401      1.1  christos         TermArg
   1402      1.1  christos         TermArgItem
   1403      1.1  christos         Target
   1404      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1405      1.1  christos     | PARSEOP_OR '('
   1406      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1407      1.1  christos     ;
   1408      1.1  christos 
   1409      1.1  christos /*
   1410      1.1  christos  * In RefOf, the node isn't really a target, but we can't keep track of it after
   1411      1.1  christos  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
   1412      1.1  christos  */
   1413      1.1  christos RefOfTerm
   1414      1.1  christos     : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
   1415      1.1  christos         SuperName
   1416      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
   1417      1.1  christos     | PARSEOP_REFOF '('
   1418      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1419      1.1  christos     ;
   1420      1.1  christos 
   1421      1.1  christos ShiftLeftTerm
   1422      1.1  christos     : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
   1423      1.1  christos         TermArg
   1424      1.1  christos         TermArgItem
   1425      1.1  christos         Target
   1426      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1427      1.1  christos     | PARSEOP_SHIFTLEFT '('
   1428      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1429      1.1  christos     ;
   1430      1.1  christos 
   1431      1.1  christos ShiftRightTerm
   1432      1.1  christos     : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
   1433      1.1  christos         TermArg
   1434      1.1  christos         TermArgItem
   1435      1.1  christos         Target
   1436      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1437      1.1  christos     | PARSEOP_SHIFTRIGHT '('
   1438      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1439      1.1  christos     ;
   1440      1.1  christos 
   1441      1.1  christos SizeOfTerm
   1442      1.1  christos     : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
   1443      1.1  christos         SuperName
   1444      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1445      1.1  christos     | PARSEOP_SIZEOF '('
   1446      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1447      1.1  christos     ;
   1448      1.1  christos 
   1449      1.1  christos StoreTerm
   1450      1.1  christos     : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
   1451      1.1  christos         TermArg
   1452      1.1  christos         ',' SuperName
   1453      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
   1454      1.1  christos     | PARSEOP_STORE '('
   1455      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1456      1.1  christos     ;
   1457      1.1  christos 
   1458      1.1  christos SubtractTerm
   1459      1.1  christos     : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
   1460      1.1  christos         TermArg
   1461      1.1  christos         TermArgItem
   1462      1.1  christos         Target
   1463      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1464      1.1  christos     | PARSEOP_SUBTRACT '('
   1465      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1466      1.1  christos     ;
   1467      1.1  christos 
   1468      1.1  christos TimerTerm
   1469      1.1  christos     : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
   1470      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
   1471      1.1  christos     | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
   1472      1.1  christos     | PARSEOP_TIMER '('
   1473      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1474      1.1  christos     ;
   1475      1.1  christos 
   1476      1.1  christos ToBCDTerm
   1477      1.1  christos     : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
   1478      1.1  christos         TermArg
   1479      1.1  christos         Target
   1480      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1481      1.1  christos     | PARSEOP_TOBCD '('
   1482      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1483      1.1  christos     ;
   1484      1.1  christos 
   1485      1.1  christos ToBufferTerm
   1486      1.1  christos     : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
   1487      1.1  christos         TermArg
   1488      1.1  christos         Target
   1489      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1490      1.1  christos     | PARSEOP_TOBUFFER '('
   1491      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1492      1.1  christos     ;
   1493      1.1  christos 
   1494      1.1  christos ToDecimalStringTerm
   1495      1.1  christos     : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
   1496      1.1  christos         TermArg
   1497      1.1  christos         Target
   1498      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1499      1.1  christos     | PARSEOP_TODECIMALSTRING '('
   1500      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1501      1.1  christos     ;
   1502      1.1  christos 
   1503      1.1  christos ToHexStringTerm
   1504      1.1  christos     : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
   1505      1.1  christos         TermArg
   1506      1.1  christos         Target
   1507      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1508      1.1  christos     | PARSEOP_TOHEXSTRING '('
   1509      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1510      1.1  christos     ;
   1511      1.1  christos 
   1512      1.1  christos ToIntegerTerm
   1513      1.1  christos     : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
   1514      1.1  christos         TermArg
   1515      1.1  christos         Target
   1516      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1517      1.1  christos     | PARSEOP_TOINTEGER '('
   1518      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1519      1.1  christos     ;
   1520      1.1  christos 
   1521  1.1.1.2  christos PldKeyword
   1522  1.1.1.2  christos     : PARSEOP_PLD_REVISION          {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
   1523  1.1.1.2  christos     | PARSEOP_PLD_IGNORECOLOR       {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
   1524  1.1.1.2  christos     | PARSEOP_PLD_RED               {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
   1525  1.1.1.2  christos     | PARSEOP_PLD_GREEN             {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
   1526  1.1.1.2  christos     | PARSEOP_PLD_BLUE              {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
   1527  1.1.1.2  christos     | PARSEOP_PLD_WIDTH             {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
   1528  1.1.1.2  christos     | PARSEOP_PLD_HEIGHT            {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
   1529  1.1.1.2  christos     | PARSEOP_PLD_USERVISIBLE       {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
   1530  1.1.1.2  christos     | PARSEOP_PLD_DOCK              {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
   1531  1.1.1.2  christos     | PARSEOP_PLD_LID               {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
   1532  1.1.1.2  christos     | PARSEOP_PLD_PANEL             {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
   1533  1.1.1.2  christos     | PARSEOP_PLD_VERTICALPOSITION  {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
   1534  1.1.1.2  christos     | PARSEOP_PLD_HORIZONTALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
   1535  1.1.1.2  christos     | PARSEOP_PLD_SHAPE             {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
   1536  1.1.1.2  christos     | PARSEOP_PLD_GROUPORIENTATION  {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
   1537  1.1.1.2  christos     | PARSEOP_PLD_GROUPTOKEN        {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
   1538  1.1.1.2  christos     | PARSEOP_PLD_GROUPPOSITION     {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
   1539  1.1.1.2  christos     | PARSEOP_PLD_BAY               {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
   1540  1.1.1.2  christos     | PARSEOP_PLD_EJECTABLE         {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
   1541  1.1.1.2  christos     | PARSEOP_PLD_EJECTREQUIRED     {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
   1542  1.1.1.2  christos     | PARSEOP_PLD_CABINETNUMBER     {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
   1543  1.1.1.2  christos     | PARSEOP_PLD_CARDCAGENUMBER    {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
   1544  1.1.1.2  christos     | PARSEOP_PLD_REFERENCE         {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
   1545  1.1.1.2  christos     | PARSEOP_PLD_ROTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
   1546  1.1.1.2  christos     | PARSEOP_PLD_ORDER             {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
   1547  1.1.1.2  christos     | PARSEOP_PLD_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
   1548  1.1.1.2  christos     | PARSEOP_PLD_VERTICALOFFSET    {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
   1549  1.1.1.2  christos     | PARSEOP_PLD_HORIZONTALOFFSET  {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
   1550  1.1.1.2  christos     ;
   1551  1.1.1.2  christos 
   1552  1.1.1.2  christos PldKeywordList
   1553  1.1.1.2  christos     :                               {$$ = NULL;}
   1554  1.1.1.2  christos     | PldKeyword
   1555  1.1.1.2  christos         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
   1556  1.1.1.2  christos     | PldKeyword
   1557  1.1.1.2  christos         PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
   1558  1.1.1.2  christos     | PldKeywordList ','            /* Allows a trailing comma at list end */
   1559  1.1.1.2  christos     | PldKeywordList ','
   1560  1.1.1.2  christos         PldKeyword
   1561  1.1.1.2  christos         PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1562  1.1.1.2  christos     | PldKeywordList ','
   1563  1.1.1.2  christos         PldKeyword
   1564  1.1.1.2  christos         PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
   1565  1.1.1.2  christos     ;
   1566  1.1.1.2  christos 
   1567  1.1.1.2  christos ToPLDTerm
   1568  1.1.1.2  christos     : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
   1569  1.1.1.2  christos         PldKeywordList
   1570  1.1.1.2  christos         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
   1571  1.1.1.2  christos     | PARSEOP_TOPLD '('
   1572  1.1.1.2  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1573  1.1.1.2  christos     ;
   1574  1.1.1.2  christos 
   1575  1.1.1.2  christos PrintfArgList
   1576  1.1.1.2  christos     :                               {$$ = NULL;}
   1577  1.1.1.2  christos     | TermArg                       {$$ = $1;}
   1578  1.1.1.2  christos     | PrintfArgList ','
   1579  1.1.1.2  christos        TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
   1580  1.1.1.2  christos     ;
   1581  1.1.1.2  christos 
   1582  1.1.1.2  christos PrintfTerm
   1583  1.1.1.2  christos     : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
   1584  1.1.1.2  christos         StringData
   1585  1.1.1.2  christos         PrintfArgList
   1586  1.1.1.2  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1587  1.1.1.2  christos     | PARSEOP_PRINTF '('
   1588  1.1.1.2  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1589  1.1.1.2  christos     ;
   1590  1.1.1.2  christos 
   1591  1.1.1.2  christos FprintfTerm
   1592  1.1.1.2  christos     : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
   1593  1.1.1.2  christos         TermArg ','
   1594  1.1.1.2  christos         StringData
   1595  1.1.1.2  christos         PrintfArgList
   1596  1.1.1.2  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
   1597  1.1.1.2  christos     | PARSEOP_FPRINTF '('
   1598  1.1.1.2  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1599  1.1.1.2  christos     ;
   1600  1.1.1.2  christos 
   1601      1.1  christos ToStringTerm
   1602      1.1  christos     : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
   1603      1.1  christos         TermArg
   1604      1.1  christos         OptionalCount
   1605      1.1  christos         Target
   1606      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1607      1.1  christos     | PARSEOP_TOSTRING '('
   1608      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1609      1.1  christos     ;
   1610      1.1  christos 
   1611      1.1  christos ToUUIDTerm
   1612      1.1  christos     : PARSEOP_TOUUID '('
   1613      1.1  christos         StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
   1614      1.1  christos     | PARSEOP_TOUUID '('
   1615      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1616      1.1  christos     ;
   1617      1.1  christos 
   1618      1.1  christos WaitTerm
   1619      1.1  christos     : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
   1620      1.1  christos         SuperName
   1621      1.1  christos         TermArgItem
   1622      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
   1623      1.1  christos     | PARSEOP_WAIT '('
   1624      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1625      1.1  christos     ;
   1626      1.1  christos 
   1627      1.1  christos XOrTerm
   1628      1.1  christos     : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
   1629      1.1  christos         TermArg
   1630      1.1  christos         TermArgItem
   1631      1.1  christos         Target
   1632      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
   1633      1.1  christos     | PARSEOP_XOR '('
   1634      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   1635      1.1  christos     ;
   1636      1.1  christos 
   1637      1.1  christos 
   1638      1.1  christos /******* Keywords *************************************************************/
   1639      1.1  christos 
   1640      1.1  christos 
   1641      1.1  christos AccessAttribKeyword
   1642      1.1  christos     : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
   1643      1.1  christos     | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
   1644      1.1  christos     | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
   1645      1.1  christos     | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
   1646      1.1  christos     | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
   1647      1.1  christos     | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
   1648      1.1  christos     | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
   1649      1.1  christos     | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
   1650      1.1  christos         ByteConst
   1651      1.1  christos         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
   1652      1.1  christos     | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
   1653      1.1  christos         ByteConst
   1654      1.1  christos         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
   1655      1.1  christos     | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
   1656      1.1  christos         ByteConst
   1657      1.1  christos         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
   1658      1.1  christos     ;
   1659      1.1  christos 
   1660      1.1  christos AccessTypeKeyword
   1661      1.1  christos     : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
   1662      1.1  christos     | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
   1663      1.1  christos     | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
   1664      1.1  christos     | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
   1665      1.1  christos     | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
   1666      1.1  christos     | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
   1667      1.1  christos     ;
   1668      1.1  christos 
   1669      1.1  christos AddressingModeKeyword
   1670      1.1  christos     : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
   1671      1.1  christos     | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
   1672      1.1  christos     ;
   1673      1.1  christos 
   1674      1.1  christos AddressKeyword
   1675      1.1  christos     : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
   1676      1.1  christos     | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
   1677      1.1  christos     | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
   1678      1.1  christos     | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
   1679      1.1  christos     ;
   1680      1.1  christos 
   1681      1.1  christos AddressSpaceKeyword
   1682      1.1  christos     : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
   1683      1.1  christos     | RegionSpaceKeyword                    {}
   1684      1.1  christos     ;
   1685      1.1  christos 
   1686      1.1  christos BitsPerByteKeyword
   1687      1.1  christos     : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
   1688      1.1  christos     | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
   1689      1.1  christos     | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
   1690      1.1  christos     | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
   1691      1.1  christos     | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
   1692      1.1  christos     ;
   1693      1.1  christos 
   1694      1.1  christos ClockPhaseKeyword
   1695      1.1  christos     : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
   1696      1.1  christos     | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
   1697      1.1  christos     ;
   1698      1.1  christos 
   1699      1.1  christos ClockPolarityKeyword
   1700      1.1  christos     : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
   1701      1.1  christos     | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
   1702      1.1  christos     ;
   1703      1.1  christos 
   1704      1.1  christos DecodeKeyword
   1705      1.1  christos     : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
   1706      1.1  christos     | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
   1707      1.1  christos     ;
   1708      1.1  christos 
   1709      1.1  christos DevicePolarityKeyword
   1710      1.1  christos     : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
   1711      1.1  christos     | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
   1712      1.1  christos     ;
   1713      1.1  christos 
   1714      1.1  christos DMATypeKeyword
   1715      1.1  christos     : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
   1716      1.1  christos     | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
   1717      1.1  christos     | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
   1718      1.1  christos     | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
   1719      1.1  christos     ;
   1720      1.1  christos 
   1721      1.1  christos EndianKeyword
   1722      1.1  christos     : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
   1723      1.1  christos     | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
   1724      1.1  christos     ;
   1725      1.1  christos 
   1726      1.1  christos FlowControlKeyword
   1727      1.1  christos     : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
   1728      1.1  christos     | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
   1729      1.1  christos     | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
   1730      1.1  christos     ;
   1731      1.1  christos 
   1732      1.1  christos InterruptLevel
   1733      1.1  christos     : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
   1734      1.1  christos     | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
   1735      1.1  christos     | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
   1736      1.1  christos     ;
   1737      1.1  christos 
   1738      1.1  christos InterruptTypeKeyword
   1739      1.1  christos     : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
   1740      1.1  christos     | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
   1741      1.1  christos     ;
   1742      1.1  christos 
   1743      1.1  christos IODecodeKeyword
   1744      1.1  christos     : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
   1745      1.1  christos     | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
   1746      1.1  christos     ;
   1747      1.1  christos 
   1748      1.1  christos IoRestrictionKeyword
   1749      1.1  christos     : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
   1750      1.1  christos     | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
   1751      1.1  christos     | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
   1752      1.1  christos     | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
   1753      1.1  christos     ;
   1754      1.1  christos 
   1755      1.1  christos LockRuleKeyword
   1756      1.1  christos     : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
   1757      1.1  christos     | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
   1758      1.1  christos     ;
   1759      1.1  christos 
   1760      1.1  christos MatchOpKeyword
   1761      1.1  christos     : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
   1762      1.1  christos     | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
   1763      1.1  christos     | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
   1764      1.1  christos     | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
   1765      1.1  christos     | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
   1766      1.1  christos     | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
   1767      1.1  christos     ;
   1768      1.1  christos 
   1769      1.1  christos MaxKeyword
   1770      1.1  christos     : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
   1771      1.1  christos     | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
   1772      1.1  christos     ;
   1773      1.1  christos 
   1774      1.1  christos MemTypeKeyword
   1775      1.1  christos     : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
   1776      1.1  christos     | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
   1777      1.1  christos     | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
   1778      1.1  christos     | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
   1779      1.1  christos     ;
   1780      1.1  christos 
   1781      1.1  christos MinKeyword
   1782      1.1  christos     : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
   1783      1.1  christos     | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
   1784      1.1  christos     ;
   1785      1.1  christos 
   1786      1.1  christos ObjectTypeKeyword
   1787      1.1  christos     : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
   1788      1.1  christos     | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
   1789      1.1  christos     | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
   1790      1.1  christos     | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
   1791      1.1  christos     | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
   1792      1.1  christos     | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
   1793      1.1  christos     | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
   1794      1.1  christos     | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
   1795      1.1  christos     | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
   1796      1.1  christos     | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
   1797      1.1  christos     | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
   1798      1.1  christos     | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
   1799      1.1  christos     | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
   1800      1.1  christos     | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
   1801      1.1  christos     | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
   1802      1.1  christos     | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
   1803      1.1  christos     ;
   1804      1.1  christos 
   1805      1.1  christos ParityTypeKeyword
   1806      1.1  christos     : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
   1807      1.1  christos     | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
   1808      1.1  christos     | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
   1809      1.1  christos     | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
   1810      1.1  christos     | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
   1811      1.1  christos     ;
   1812      1.1  christos 
   1813      1.1  christos PinConfigByte
   1814      1.1  christos     : PinConfigKeyword                      {$$ = $1;}
   1815      1.1  christos     | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
   1816      1.1  christos     ;
   1817      1.1  christos 
   1818      1.1  christos PinConfigKeyword
   1819      1.1  christos     : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
   1820      1.1  christos     | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
   1821      1.1  christos     | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
   1822      1.1  christos     | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
   1823      1.1  christos     ;
   1824      1.1  christos 
   1825      1.1  christos RangeTypeKeyword
   1826      1.1  christos     : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
   1827      1.1  christos     | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
   1828      1.1  christos     | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
   1829      1.1  christos     ;
   1830      1.1  christos 
   1831      1.1  christos RegionSpaceKeyword
   1832      1.1  christos     : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
   1833      1.1  christos     | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
   1834      1.1  christos     | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
   1835      1.1  christos     | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
   1836      1.1  christos     | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
   1837      1.1  christos     | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
   1838      1.1  christos     | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
   1839      1.1  christos     | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
   1840      1.1  christos     | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
   1841      1.1  christos     | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
   1842      1.1  christos     | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
   1843      1.1  christos     | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
   1844      1.1  christos     ;
   1845      1.1  christos 
   1846      1.1  christos ResourceTypeKeyword
   1847      1.1  christos     : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1848      1.1  christos     | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
   1849      1.1  christos     ;
   1850      1.1  christos 
   1851      1.1  christos SerializeRuleKeyword
   1852      1.1  christos     : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
   1853      1.1  christos     | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
   1854      1.1  christos     ;
   1855      1.1  christos 
   1856      1.1  christos ShareTypeKeyword
   1857      1.1  christos     : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
   1858      1.1  christos     | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
   1859      1.1  christos     | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
   1860      1.1  christos     | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
   1861      1.1  christos    ;
   1862      1.1  christos 
   1863      1.1  christos SlaveModeKeyword
   1864      1.1  christos     : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
   1865      1.1  christos     | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
   1866      1.1  christos     ;
   1867      1.1  christos 
   1868      1.1  christos StopBitsKeyword
   1869      1.1  christos     : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
   1870      1.1  christos     | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
   1871      1.1  christos     | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
   1872      1.1  christos     | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
   1873      1.1  christos     ;
   1874      1.1  christos 
   1875      1.1  christos TranslationKeyword
   1876      1.1  christos     : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
   1877      1.1  christos     | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
   1878      1.1  christos     ;
   1879      1.1  christos 
   1880      1.1  christos TypeKeyword
   1881      1.1  christos     : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
   1882      1.1  christos     | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
   1883      1.1  christos     ;
   1884      1.1  christos 
   1885      1.1  christos UpdateRuleKeyword
   1886      1.1  christos     : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
   1887      1.1  christos     | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
   1888      1.1  christos     | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
   1889      1.1  christos     ;
   1890      1.1  christos 
   1891      1.1  christos WireModeKeyword
   1892      1.1  christos     : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
   1893      1.1  christos     | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
   1894      1.1  christos     ;
   1895      1.1  christos 
   1896      1.1  christos XferSizeKeyword
   1897      1.1  christos     : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
   1898      1.1  christos     | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
   1899      1.1  christos     | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
   1900      1.1  christos     | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
   1901      1.1  christos     | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
   1902      1.1  christos     | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
   1903      1.1  christos     ;
   1904      1.1  christos 
   1905      1.1  christos XferTypeKeyword
   1906      1.1  christos     : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
   1907      1.1  christos     | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
   1908      1.1  christos     | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
   1909      1.1  christos     ;
   1910      1.1  christos 
   1911      1.1  christos 
   1912      1.1  christos /******* Miscellaneous Types **************************************************/
   1913      1.1  christos 
   1914      1.1  christos 
   1915      1.1  christos SuperName
   1916      1.1  christos     : NameString                    {}
   1917      1.1  christos     | ArgTerm                       {}
   1918      1.1  christos     | LocalTerm                     {}
   1919      1.1  christos     | DebugTerm                     {}
   1920      1.1  christos     | Type6Opcode                   {}
   1921      1.1  christos 
   1922  1.1.1.2  christos /* For ObjectType: SuperName except for MethodInvocationTerm */
   1923      1.1  christos 
   1924      1.1  christos ObjectTypeName
   1925      1.1  christos     : NameString                    {}
   1926      1.1  christos     | ArgTerm                       {}
   1927      1.1  christos     | LocalTerm                     {}
   1928      1.1  christos     | DebugTerm                     {}
   1929      1.1  christos     | RefOfTerm                     {}
   1930      1.1  christos     | DerefOfTerm                   {}
   1931      1.1  christos     | IndexTerm                     {}
   1932      1.1  christos 
   1933  1.1.1.2  christos /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
   1934      1.1  christos     ;
   1935      1.1  christos 
   1936      1.1  christos ArgTerm
   1937      1.1  christos     : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
   1938      1.1  christos     | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
   1939      1.1  christos     | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
   1940      1.1  christos     | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
   1941      1.1  christos     | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
   1942      1.1  christos     | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
   1943      1.1  christos     | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
   1944      1.1  christos     ;
   1945      1.1  christos 
   1946      1.1  christos LocalTerm
   1947      1.1  christos     : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
   1948      1.1  christos     | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
   1949      1.1  christos     | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
   1950      1.1  christos     | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
   1951      1.1  christos     | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
   1952      1.1  christos     | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
   1953      1.1  christos     | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
   1954      1.1  christos     | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
   1955      1.1  christos     ;
   1956      1.1  christos 
   1957      1.1  christos DebugTerm
   1958      1.1  christos     : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
   1959      1.1  christos     ;
   1960      1.1  christos 
   1961      1.1  christos 
   1962      1.1  christos ByteConst
   1963      1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
   1964      1.1  christos     ;
   1965      1.1  christos 
   1966      1.1  christos WordConst
   1967      1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
   1968      1.1  christos     ;
   1969      1.1  christos 
   1970      1.1  christos DWordConst
   1971      1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
   1972      1.1  christos     ;
   1973      1.1  christos 
   1974      1.1  christos QWordConst
   1975      1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
   1976      1.1  christos     ;
   1977      1.1  christos 
   1978      1.1  christos Integer
   1979      1.1  christos     : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
   1980      1.1  christos     ;
   1981      1.1  christos 
   1982      1.1  christos String
   1983      1.1  christos     : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
   1984      1.1  christos     ;
   1985      1.1  christos 
   1986      1.1  christos ConstTerm
   1987      1.1  christos     : ConstExprTerm                 {}
   1988      1.1  christos     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
   1989      1.1  christos     ;
   1990      1.1  christos 
   1991      1.1  christos ConstExprTerm
   1992      1.1  christos     : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
   1993      1.1  christos     | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
   1994      1.1  christos     | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
   1995      1.1  christos     | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
   1996      1.1  christos     | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
   1997      1.1  christos     | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
   1998      1.1  christos     | PARSEOP___PATH__              {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
   1999      1.1  christos     ;
   2000      1.1  christos 
   2001      1.1  christos /*
   2002      1.1  christos  * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
   2003      1.1  christos  * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
   2004      1.1  christos  * to simple integers. It is an error if these types of expressions cannot be
   2005      1.1  christos  * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
   2006      1.1  christos  * Note: The required byte length of the constant is passed through to the
   2007      1.1  christos  * constant folding code in the node AmlLength field.
   2008      1.1  christos  */
   2009      1.1  christos ByteConstExpr
   2010      1.1  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
   2011      1.1  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
   2012      1.1  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
   2013      1.1  christos     | ByteConst                     {}
   2014      1.1  christos     ;
   2015      1.1  christos 
   2016      1.1  christos WordConstExpr
   2017      1.1  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
   2018      1.1  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
   2019      1.1  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
   2020      1.1  christos     | WordConst                     {}
   2021      1.1  christos     ;
   2022      1.1  christos 
   2023      1.1  christos DWordConstExpr
   2024      1.1  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
   2025      1.1  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
   2026      1.1  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
   2027      1.1  christos     | DWordConst                    {}
   2028      1.1  christos     ;
   2029      1.1  christos 
   2030      1.1  christos QWordConstExpr
   2031      1.1  christos     : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
   2032      1.1  christos     | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
   2033      1.1  christos     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
   2034      1.1  christos     | QWordConst                    {}
   2035      1.1  christos     ;
   2036      1.1  christos 
   2037      1.1  christos /* OptionalCount must appear before ByteList or an incorrect reduction will result */
   2038      1.1  christos 
   2039      1.1  christos OptionalCount
   2040      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
   2041      1.1  christos     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
   2042      1.1  christos     | ',' TermArg                   {$$ = $2;}
   2043      1.1  christos     ;
   2044      1.1  christos 
   2045      1.1  christos BufferTerm
   2046      1.1  christos     : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
   2047      1.1  christos         OptionalTermArg
   2048      1.1  christos         ')' '{'
   2049      1.1  christos             BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2050      1.1  christos     | PARSEOP_BUFFER '('
   2051      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2052      1.1  christos     ;
   2053      1.1  christos 
   2054      1.1  christos BufferTermData
   2055      1.1  christos     : ByteList                      {}
   2056      1.1  christos     | StringData                    {}
   2057      1.1  christos     ;
   2058      1.1  christos 
   2059      1.1  christos ByteList
   2060      1.1  christos     :                               {$$ = NULL;}
   2061      1.1  christos     | ByteConstExpr
   2062      1.1  christos     | ByteList ','                  /* Allows a trailing comma at list end */
   2063      1.1  christos     | ByteList ','
   2064      1.1  christos         ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
   2065      1.1  christos     ;
   2066      1.1  christos 
   2067      1.1  christos DataBufferTerm
   2068      1.1  christos     : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
   2069      1.1  christos         OptionalWordConst
   2070      1.1  christos         ')' '{'
   2071      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2072      1.1  christos     | PARSEOP_DATABUFFER '('
   2073      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2074      1.1  christos     ;
   2075      1.1  christos 
   2076      1.1  christos DWordList
   2077      1.1  christos     :                               {$$ = NULL;}
   2078      1.1  christos     | DWordConstExpr
   2079      1.1  christos     | DWordList ','                 /* Allows a trailing comma at list end */
   2080      1.1  christos     | DWordList ','
   2081      1.1  christos         DWordConstExpr              {$$ = TrLinkPeerNode ($1,$3);}
   2082      1.1  christos     ;
   2083      1.1  christos 
   2084      1.1  christos PackageTerm
   2085      1.1  christos     : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
   2086      1.1  christos         VarPackageLengthTerm
   2087      1.1  christos         ')' '{'
   2088      1.1  christos             PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2089      1.1  christos     | PARSEOP_PACKAGE '('
   2090      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2091      1.1  christos     ;
   2092      1.1  christos 
   2093      1.1  christos PackageList
   2094      1.1  christos     :                               {$$ = NULL;}
   2095      1.1  christos     | PackageElement
   2096      1.1  christos     | PackageList ','               /* Allows a trailing comma at list end */
   2097      1.1  christos     | PackageList ','
   2098      1.1  christos         PackageElement              {$$ = TrLinkPeerNode ($1,$3);}
   2099      1.1  christos     ;
   2100      1.1  christos 
   2101      1.1  christos PackageElement
   2102      1.1  christos     : DataObject                    {}
   2103      1.1  christos     | NameString                    {}
   2104      1.1  christos     ;
   2105      1.1  christos 
   2106      1.1  christos VarPackageLengthTerm
   2107      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
   2108      1.1  christos     | TermArg                       {$$ = $1;}
   2109      1.1  christos     ;
   2110      1.1  christos 
   2111      1.1  christos 
   2112      1.1  christos /******* Macros ***********************************************/
   2113      1.1  christos 
   2114      1.1  christos 
   2115      1.1  christos EISAIDTerm
   2116      1.1  christos     : PARSEOP_EISAID '('
   2117      1.1  christos         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
   2118      1.1  christos     | PARSEOP_EISAID '('
   2119      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2120      1.1  christos     ;
   2121      1.1  christos 
   2122      1.1  christos UnicodeTerm
   2123      1.1  christos     : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
   2124      1.1  christos         StringData
   2125      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
   2126      1.1  christos     | PARSEOP_UNICODE '('
   2127      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2128      1.1  christos     ;
   2129      1.1  christos 
   2130      1.1  christos 
   2131      1.1  christos /******* Resources and Memory ***********************************************/
   2132      1.1  christos 
   2133      1.1  christos 
   2134      1.1  christos /*
   2135      1.1  christos  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
   2136      1.1  christos  * Also, insert the EndTag at the end of the template.
   2137      1.1  christos  */
   2138      1.1  christos ResourceTemplateTerm
   2139      1.1  christos     : PARSEOP_RESOURCETEMPLATE '(' ')'
   2140      1.1  christos         '{'
   2141      1.1  christos         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
   2142      1.1  christos                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
   2143      1.1  christos                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
   2144      1.1  christos                                           $5,
   2145      1.1  christos                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
   2146      1.1  christos     ;
   2147      1.1  christos 
   2148      1.1  christos ResourceMacroList
   2149      1.1  christos     :                               {$$ = NULL;}
   2150      1.1  christos     | ResourceMacroList
   2151      1.1  christos         ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
   2152      1.1  christos     ;
   2153      1.1  christos 
   2154      1.1  christos ResourceMacroTerm
   2155      1.1  christos     : DMATerm                       {}
   2156      1.1  christos     | DWordIOTerm                   {}
   2157      1.1  christos     | DWordMemoryTerm               {}
   2158      1.1  christos     | DWordSpaceTerm                {}
   2159      1.1  christos     | EndDependentFnTerm            {}
   2160      1.1  christos     | ExtendedIOTerm                {}
   2161      1.1  christos     | ExtendedMemoryTerm            {}
   2162      1.1  christos     | ExtendedSpaceTerm             {}
   2163      1.1  christos     | FixedDmaTerm                  {}
   2164      1.1  christos     | FixedIOTerm                   {}
   2165      1.1  christos     | GpioIntTerm                   {}
   2166      1.1  christos     | GpioIoTerm                    {}
   2167      1.1  christos     | I2cSerialBusTerm              {}
   2168      1.1  christos     | InterruptTerm                 {}
   2169      1.1  christos     | IOTerm                        {}
   2170      1.1  christos     | IRQNoFlagsTerm                {}
   2171      1.1  christos     | IRQTerm                       {}
   2172      1.1  christos     | Memory24Term                  {}
   2173      1.1  christos     | Memory32FixedTerm             {}
   2174      1.1  christos     | Memory32Term                  {}
   2175      1.1  christos     | QWordIOTerm                   {}
   2176      1.1  christos     | QWordMemoryTerm               {}
   2177      1.1  christos     | QWordSpaceTerm                {}
   2178      1.1  christos     | RegisterTerm                  {}
   2179      1.1  christos     | SpiSerialBusTerm              {}
   2180      1.1  christos     | StartDependentFnNoPriTerm     {}
   2181      1.1  christos     | StartDependentFnTerm          {}
   2182      1.1  christos     | UartSerialBusTerm             {}
   2183      1.1  christos     | VendorLongTerm                {}
   2184      1.1  christos     | VendorShortTerm               {}
   2185      1.1  christos     | WordBusNumberTerm             {}
   2186      1.1  christos     | WordIOTerm                    {}
   2187      1.1  christos     | WordSpaceTerm                 {}
   2188      1.1  christos     ;
   2189      1.1  christos 
   2190      1.1  christos DMATerm
   2191      1.1  christos     : PARSEOP_DMA '('               {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
   2192      1.1  christos         DMATypeKeyword
   2193      1.1  christos         OptionalBusMasterKeyword
   2194      1.1  christos         ',' XferTypeKeyword
   2195      1.1  christos         OptionalNameString_Last
   2196      1.1  christos         ')' '{'
   2197      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
   2198      1.1  christos     | PARSEOP_DMA '('
   2199      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2200      1.1  christos     ;
   2201      1.1  christos 
   2202      1.1  christos DWordIOTerm
   2203      1.1  christos     : PARSEOP_DWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
   2204      1.1  christos         OptionalResourceType_First
   2205      1.1  christos         OptionalMinType
   2206      1.1  christos         OptionalMaxType
   2207      1.1  christos         OptionalDecodeType
   2208      1.1  christos         OptionalRangeType
   2209      1.1  christos         ',' DWordConstExpr
   2210      1.1  christos         ',' DWordConstExpr
   2211      1.1  christos         ',' DWordConstExpr
   2212      1.1  christos         ',' DWordConstExpr
   2213      1.1  christos         ',' DWordConstExpr
   2214      1.1  christos         OptionalByteConstExpr
   2215      1.1  christos         OptionalStringData
   2216      1.1  christos         OptionalNameString
   2217      1.1  christos         OptionalType
   2218      1.1  christos         OptionalTranslationType_Last
   2219      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
   2220      1.1  christos     | PARSEOP_DWORDIO '('
   2221      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2222      1.1  christos     ;
   2223      1.1  christos 
   2224      1.1  christos DWordMemoryTerm
   2225      1.1  christos     : PARSEOP_DWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
   2226      1.1  christos         OptionalResourceType_First
   2227      1.1  christos         OptionalDecodeType
   2228      1.1  christos         OptionalMinType
   2229      1.1  christos         OptionalMaxType
   2230      1.1  christos         OptionalMemType
   2231      1.1  christos         ',' OptionalReadWriteKeyword
   2232      1.1  christos         ',' DWordConstExpr
   2233      1.1  christos         ',' DWordConstExpr
   2234      1.1  christos         ',' DWordConstExpr
   2235      1.1  christos         ',' DWordConstExpr
   2236      1.1  christos         ',' DWordConstExpr
   2237      1.1  christos         OptionalByteConstExpr
   2238      1.1  christos         OptionalStringData
   2239      1.1  christos         OptionalNameString
   2240      1.1  christos         OptionalAddressRange
   2241      1.1  christos         OptionalType_Last
   2242      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
   2243      1.1  christos     | PARSEOP_DWORDMEMORY '('
   2244      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2245      1.1  christos     ;
   2246      1.1  christos 
   2247      1.1  christos DWordSpaceTerm
   2248      1.1  christos     : PARSEOP_DWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
   2249      1.1  christos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
   2250      1.1  christos         OptionalResourceType
   2251      1.1  christos         OptionalDecodeType
   2252      1.1  christos         OptionalMinType
   2253      1.1  christos         OptionalMaxType
   2254      1.1  christos         ',' ByteConstExpr
   2255      1.1  christos         ',' DWordConstExpr
   2256      1.1  christos         ',' DWordConstExpr
   2257      1.1  christos         ',' DWordConstExpr
   2258      1.1  christos         ',' DWordConstExpr
   2259      1.1  christos         ',' DWordConstExpr
   2260      1.1  christos         OptionalByteConstExpr
   2261      1.1  christos         OptionalStringData
   2262      1.1  christos         OptionalNameString_Last
   2263      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
   2264      1.1  christos     | PARSEOP_DWORDSPACE '('
   2265      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2266      1.1  christos     ;
   2267      1.1  christos 
   2268      1.1  christos 
   2269      1.1  christos EndDependentFnTerm
   2270      1.1  christos     : PARSEOP_ENDDEPENDENTFN '('
   2271      1.1  christos         ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
   2272      1.1  christos     | PARSEOP_ENDDEPENDENTFN '('
   2273      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2274      1.1  christos     ;
   2275      1.1  christos 
   2276      1.1  christos ExtendedIOTerm
   2277      1.1  christos     : PARSEOP_EXTENDEDIO '('        {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
   2278      1.1  christos         OptionalResourceType_First
   2279      1.1  christos         OptionalMinType
   2280      1.1  christos         OptionalMaxType
   2281      1.1  christos         OptionalDecodeType
   2282      1.1  christos         OptionalRangeType
   2283      1.1  christos         ',' QWordConstExpr
   2284      1.1  christos         ',' QWordConstExpr
   2285      1.1  christos         ',' QWordConstExpr
   2286      1.1  christos         ',' QWordConstExpr
   2287      1.1  christos         ',' QWordConstExpr
   2288      1.1  christos         OptionalQWordConstExpr
   2289      1.1  christos         OptionalNameString
   2290      1.1  christos         OptionalType
   2291      1.1  christos         OptionalTranslationType_Last
   2292      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
   2293      1.1  christos     | PARSEOP_EXTENDEDIO '('
   2294      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2295      1.1  christos     ;
   2296      1.1  christos 
   2297      1.1  christos ExtendedMemoryTerm
   2298      1.1  christos     : PARSEOP_EXTENDEDMEMORY '('    {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
   2299      1.1  christos         OptionalResourceType_First
   2300      1.1  christos         OptionalDecodeType
   2301      1.1  christos         OptionalMinType
   2302      1.1  christos         OptionalMaxType
   2303      1.1  christos         OptionalMemType
   2304      1.1  christos         ',' OptionalReadWriteKeyword
   2305      1.1  christos         ',' QWordConstExpr
   2306      1.1  christos         ',' QWordConstExpr
   2307      1.1  christos         ',' QWordConstExpr
   2308      1.1  christos         ',' QWordConstExpr
   2309      1.1  christos         ',' QWordConstExpr
   2310      1.1  christos         OptionalQWordConstExpr
   2311      1.1  christos         OptionalNameString
   2312      1.1  christos         OptionalAddressRange
   2313      1.1  christos         OptionalType_Last
   2314      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
   2315      1.1  christos     | PARSEOP_EXTENDEDMEMORY '('
   2316      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2317      1.1  christos     ;
   2318      1.1  christos 
   2319      1.1  christos ExtendedSpaceTerm
   2320      1.1  christos     : PARSEOP_EXTENDEDSPACE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
   2321      1.1  christos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
   2322      1.1  christos         OptionalResourceType
   2323      1.1  christos         OptionalDecodeType
   2324      1.1  christos         OptionalMinType
   2325      1.1  christos         OptionalMaxType
   2326      1.1  christos         ',' ByteConstExpr
   2327      1.1  christos         ',' QWordConstExpr
   2328      1.1  christos         ',' QWordConstExpr
   2329      1.1  christos         ',' QWordConstExpr
   2330      1.1  christos         ',' QWordConstExpr
   2331      1.1  christos         ',' QWordConstExpr
   2332      1.1  christos         OptionalQWordConstExpr
   2333      1.1  christos         OptionalNameString_Last
   2334      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
   2335      1.1  christos     | PARSEOP_EXTENDEDSPACE '('
   2336      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2337      1.1  christos     ;
   2338      1.1  christos 
   2339      1.1  christos FixedDmaTerm
   2340      1.1  christos     : PARSEOP_FIXEDDMA '('          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
   2341      1.1  christos         WordConstExpr               /* 04: DMA RequestLines */
   2342      1.1  christos         ',' WordConstExpr           /* 06: DMA Channels */
   2343      1.1  christos         OptionalXferSize            /* 07: DMA TransferSize */
   2344      1.1  christos         OptionalNameString          /* 08: DescriptorName */
   2345      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
   2346      1.1  christos     | PARSEOP_FIXEDDMA '('
   2347      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2348      1.1  christos     ;
   2349      1.1  christos 
   2350      1.1  christos FixedIOTerm
   2351      1.1  christos     : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
   2352      1.1  christos         WordConstExpr
   2353      1.1  christos         ',' ByteConstExpr
   2354      1.1  christos         OptionalNameString_Last
   2355      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
   2356      1.1  christos     | PARSEOP_FIXEDIO '('
   2357      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2358      1.1  christos     ;
   2359      1.1  christos 
   2360      1.1  christos GpioIntTerm
   2361      1.1  christos     : PARSEOP_GPIO_INT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
   2362      1.1  christos         InterruptTypeKeyword        /* 04: InterruptType */
   2363      1.1  christos         ',' InterruptLevel          /* 06: InterruptLevel */
   2364      1.1  christos         OptionalShareType           /* 07: SharedType */
   2365      1.1  christos         ',' PinConfigByte           /* 09: PinConfig */
   2366      1.1  christos         OptionalWordConstExpr       /* 10: DebounceTimeout */
   2367      1.1  christos         ',' StringData              /* 12: ResourceSource */
   2368      1.1  christos         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
   2369      1.1  christos         OptionalResourceType        /* 14: ResourceType */
   2370      1.1  christos         OptionalNameString          /* 15: DescriptorName */
   2371      1.1  christos         OptionalBuffer_Last         /* 16: VendorData */
   2372      1.1  christos         ')' '{'
   2373      1.1  christos             DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
   2374      1.1  christos     | PARSEOP_GPIO_INT '('
   2375      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2376      1.1  christos     ;
   2377      1.1  christos 
   2378      1.1  christos GpioIoTerm
   2379      1.1  christos     : PARSEOP_GPIO_IO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
   2380      1.1  christos         OptionalShareType_First     /* 04: SharedType */
   2381      1.1  christos         ',' PinConfigByte           /* 06: PinConfig */
   2382      1.1  christos         OptionalWordConstExpr       /* 07: DebounceTimeout */
   2383      1.1  christos         OptionalWordConstExpr       /* 08: DriveStrength */
   2384      1.1  christos         OptionalIoRestriction       /* 09: IoRestriction */
   2385      1.1  christos         ',' StringData              /* 11: ResourceSource */
   2386      1.1  christos         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
   2387      1.1  christos         OptionalResourceType        /* 13: ResourceType */
   2388      1.1  christos         OptionalNameString          /* 14: DescriptorName */
   2389      1.1  christos         OptionalBuffer_Last         /* 15: VendorData */
   2390      1.1  christos         ')' '{'
   2391      1.1  christos             DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
   2392      1.1  christos     | PARSEOP_GPIO_IO '('
   2393      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2394      1.1  christos     ;
   2395      1.1  christos 
   2396      1.1  christos I2cSerialBusTerm
   2397      1.1  christos     : PARSEOP_I2C_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
   2398      1.1  christos         WordConstExpr               /* 04: SlaveAddress */
   2399      1.1  christos         OptionalSlaveMode           /* 05: SlaveMode */
   2400      1.1  christos         ',' DWordConstExpr          /* 07: ConnectionSpeed */
   2401      1.1  christos         OptionalAddressingMode      /* 08: AddressingMode */
   2402      1.1  christos         ',' StringData              /* 10: ResourceSource */
   2403      1.1  christos         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
   2404      1.1  christos         OptionalResourceType        /* 12: ResourceType */
   2405      1.1  christos         OptionalNameString          /* 13: DescriptorName */
   2406      1.1  christos         OptionalBuffer_Last         /* 14: VendorData */
   2407      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
   2408      1.1  christos     | PARSEOP_I2C_SERIALBUS '('
   2409      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2410      1.1  christos     ;
   2411      1.1  christos 
   2412      1.1  christos InterruptTerm
   2413      1.1  christos     : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
   2414      1.1  christos         OptionalResourceType_First
   2415      1.1  christos         ',' InterruptTypeKeyword
   2416      1.1  christos         ',' InterruptLevel
   2417      1.1  christos         OptionalShareType
   2418      1.1  christos         OptionalByteConstExpr
   2419      1.1  christos         OptionalStringData
   2420      1.1  christos         OptionalNameString_Last
   2421      1.1  christos         ')' '{'
   2422      1.1  christos             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
   2423      1.1  christos     | PARSEOP_INTERRUPT '('
   2424      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2425      1.1  christos     ;
   2426      1.1  christos 
   2427      1.1  christos IOTerm
   2428      1.1  christos     : PARSEOP_IO '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
   2429      1.1  christos         IODecodeKeyword
   2430      1.1  christos         ',' WordConstExpr
   2431      1.1  christos         ',' WordConstExpr
   2432      1.1  christos         ',' ByteConstExpr
   2433      1.1  christos         ',' ByteConstExpr
   2434      1.1  christos         OptionalNameString_Last
   2435      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
   2436      1.1  christos     | PARSEOP_IO '('
   2437      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2438      1.1  christos     ;
   2439      1.1  christos 
   2440      1.1  christos IRQNoFlagsTerm
   2441      1.1  christos     : PARSEOP_IRQNOFLAGS '('        {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
   2442      1.1  christos         OptionalNameString_First
   2443      1.1  christos         ')' '{'
   2444      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2445      1.1  christos     | PARSEOP_IRQNOFLAGS '('
   2446      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2447      1.1  christos     ;
   2448      1.1  christos 
   2449      1.1  christos IRQTerm
   2450      1.1  christos     : PARSEOP_IRQ '('               {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
   2451      1.1  christos         InterruptTypeKeyword
   2452      1.1  christos         ',' InterruptLevel
   2453      1.1  christos         OptionalShareType
   2454      1.1  christos         OptionalNameString_Last
   2455      1.1  christos         ')' '{'
   2456      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
   2457      1.1  christos     | PARSEOP_IRQ '('
   2458      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2459      1.1  christos     ;
   2460      1.1  christos 
   2461      1.1  christos Memory24Term
   2462      1.1  christos     : PARSEOP_MEMORY24 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
   2463      1.1  christos         OptionalReadWriteKeyword
   2464      1.1  christos         ',' WordConstExpr
   2465      1.1  christos         ',' WordConstExpr
   2466      1.1  christos         ',' WordConstExpr
   2467      1.1  christos         ',' WordConstExpr
   2468      1.1  christos         OptionalNameString_Last
   2469      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
   2470      1.1  christos     | PARSEOP_MEMORY24 '('
   2471      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2472      1.1  christos     ;
   2473      1.1  christos 
   2474      1.1  christos Memory32FixedTerm
   2475      1.1  christos     : PARSEOP_MEMORY32FIXED '('     {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
   2476      1.1  christos         OptionalReadWriteKeyword
   2477      1.1  christos         ',' DWordConstExpr
   2478      1.1  christos         ',' DWordConstExpr
   2479      1.1  christos         OptionalNameString_Last
   2480      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
   2481      1.1  christos     | PARSEOP_MEMORY32FIXED '('
   2482      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2483      1.1  christos     ;
   2484      1.1  christos 
   2485      1.1  christos Memory32Term
   2486      1.1  christos     : PARSEOP_MEMORY32 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
   2487      1.1  christos         OptionalReadWriteKeyword
   2488      1.1  christos         ',' DWordConstExpr
   2489      1.1  christos         ',' DWordConstExpr
   2490      1.1  christos         ',' DWordConstExpr
   2491      1.1  christos         ',' DWordConstExpr
   2492      1.1  christos         OptionalNameString_Last
   2493      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
   2494      1.1  christos     | PARSEOP_MEMORY32 '('
   2495      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2496      1.1  christos     ;
   2497      1.1  christos 
   2498      1.1  christos QWordIOTerm
   2499      1.1  christos     : PARSEOP_QWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
   2500      1.1  christos         OptionalResourceType_First
   2501      1.1  christos         OptionalMinType
   2502      1.1  christos         OptionalMaxType
   2503      1.1  christos         OptionalDecodeType
   2504      1.1  christos         OptionalRangeType
   2505      1.1  christos         ',' QWordConstExpr
   2506      1.1  christos         ',' QWordConstExpr
   2507      1.1  christos         ',' QWordConstExpr
   2508      1.1  christos         ',' QWordConstExpr
   2509      1.1  christos         ',' QWordConstExpr
   2510      1.1  christos         OptionalByteConstExpr
   2511      1.1  christos         OptionalStringData
   2512      1.1  christos         OptionalNameString
   2513      1.1  christos         OptionalType
   2514      1.1  christos         OptionalTranslationType_Last
   2515      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
   2516      1.1  christos     | PARSEOP_QWORDIO '('
   2517      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2518      1.1  christos     ;
   2519      1.1  christos 
   2520      1.1  christos QWordMemoryTerm
   2521      1.1  christos     : PARSEOP_QWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
   2522      1.1  christos         OptionalResourceType_First
   2523      1.1  christos         OptionalDecodeType
   2524      1.1  christos         OptionalMinType
   2525      1.1  christos         OptionalMaxType
   2526      1.1  christos         OptionalMemType
   2527      1.1  christos         ',' OptionalReadWriteKeyword
   2528      1.1  christos         ',' QWordConstExpr
   2529      1.1  christos         ',' QWordConstExpr
   2530      1.1  christos         ',' QWordConstExpr
   2531      1.1  christos         ',' QWordConstExpr
   2532      1.1  christos         ',' QWordConstExpr
   2533      1.1  christos         OptionalByteConstExpr
   2534      1.1  christos         OptionalStringData
   2535      1.1  christos         OptionalNameString
   2536      1.1  christos         OptionalAddressRange
   2537      1.1  christos         OptionalType_Last
   2538      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
   2539      1.1  christos     | PARSEOP_QWORDMEMORY '('
   2540      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2541      1.1  christos     ;
   2542      1.1  christos 
   2543      1.1  christos QWordSpaceTerm
   2544      1.1  christos     : PARSEOP_QWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
   2545      1.1  christos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
   2546      1.1  christos         OptionalResourceType
   2547      1.1  christos         OptionalDecodeType
   2548      1.1  christos         OptionalMinType
   2549      1.1  christos         OptionalMaxType
   2550      1.1  christos         ',' ByteConstExpr
   2551      1.1  christos         ',' QWordConstExpr
   2552      1.1  christos         ',' QWordConstExpr
   2553      1.1  christos         ',' QWordConstExpr
   2554      1.1  christos         ',' QWordConstExpr
   2555      1.1  christos         ',' QWordConstExpr
   2556      1.1  christos         OptionalByteConstExpr
   2557      1.1  christos         OptionalStringData
   2558      1.1  christos         OptionalNameString_Last
   2559      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
   2560      1.1  christos     | PARSEOP_QWORDSPACE '('
   2561      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2562      1.1  christos     ;
   2563      1.1  christos 
   2564      1.1  christos RegisterTerm
   2565      1.1  christos     : PARSEOP_REGISTER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
   2566      1.1  christos         AddressSpaceKeyword
   2567      1.1  christos         ',' ByteConstExpr
   2568      1.1  christos         ',' ByteConstExpr
   2569      1.1  christos         ',' QWordConstExpr
   2570      1.1  christos         OptionalAccessSize
   2571      1.1  christos         OptionalNameString_Last
   2572      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
   2573      1.1  christos     | PARSEOP_REGISTER '('
   2574      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2575      1.1  christos     ;
   2576      1.1  christos 
   2577      1.1  christos SpiSerialBusTerm
   2578      1.1  christos     : PARSEOP_SPI_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
   2579      1.1  christos         WordConstExpr               /* 04: DeviceSelection */
   2580      1.1  christos         OptionalDevicePolarity      /* 05: DevicePolarity */
   2581      1.1  christos         OptionalWireMode            /* 06: WireMode */
   2582      1.1  christos         ',' ByteConstExpr           /* 08: DataBitLength */
   2583      1.1  christos         OptionalSlaveMode           /* 09: SlaveMode */
   2584      1.1  christos         ',' DWordConstExpr          /* 11: ConnectionSpeed */
   2585      1.1  christos         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
   2586      1.1  christos         ',' ClockPhaseKeyword       /* 15: ClockPhase */
   2587      1.1  christos         ',' StringData              /* 17: ResourceSource */
   2588      1.1  christos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
   2589      1.1  christos         OptionalResourceType        /* 19: ResourceType */
   2590      1.1  christos         OptionalNameString          /* 20: DescriptorName */
   2591      1.1  christos         OptionalBuffer_Last         /* 21: VendorData */
   2592      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
   2593      1.1  christos     | PARSEOP_SPI_SERIALBUS '('
   2594      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2595      1.1  christos     ;
   2596      1.1  christos 
   2597      1.1  christos StartDependentFnNoPriTerm
   2598      1.1  christos     : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
   2599      1.1  christos         ')' '{'
   2600      1.1  christos         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
   2601      1.1  christos     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
   2602      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2603      1.1  christos     ;
   2604      1.1  christos 
   2605      1.1  christos StartDependentFnTerm
   2606      1.1  christos     : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
   2607      1.1  christos         ByteConstExpr
   2608      1.1  christos         ',' ByteConstExpr
   2609      1.1  christos         ')' '{'
   2610      1.1  christos         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
   2611      1.1  christos     | PARSEOP_STARTDEPENDENTFN '('
   2612      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2613      1.1  christos     ;
   2614      1.1  christos 
   2615      1.1  christos UartSerialBusTerm
   2616      1.1  christos     : PARSEOP_UART_SERIALBUS '('    {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
   2617      1.1  christos         DWordConstExpr              /* 04: ConnectionSpeed */
   2618      1.1  christos         OptionalBitsPerByte         /* 05: BitsPerByte */
   2619      1.1  christos         OptionalStopBits            /* 06: StopBits */
   2620      1.1  christos         ',' ByteConstExpr           /* 08: LinesInUse */
   2621      1.1  christos         OptionalEndian              /* 09: Endianess */
   2622      1.1  christos         OptionalParityType          /* 10: Parity */
   2623      1.1  christos         OptionalFlowControl         /* 11: FlowControl */
   2624      1.1  christos         ',' WordConstExpr           /* 13: Rx BufferSize */
   2625      1.1  christos         ',' WordConstExpr           /* 15: Tx BufferSize */
   2626      1.1  christos         ',' StringData              /* 17: ResourceSource */
   2627      1.1  christos         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
   2628      1.1  christos         OptionalResourceType        /* 19: ResourceType */
   2629      1.1  christos         OptionalNameString          /* 20: DescriptorName */
   2630      1.1  christos         OptionalBuffer_Last         /* 21: VendorData */
   2631      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
   2632      1.1  christos     | PARSEOP_UART_SERIALBUS '('
   2633      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2634      1.1  christos     ;
   2635      1.1  christos 
   2636      1.1  christos VendorLongTerm
   2637      1.1  christos     : PARSEOP_VENDORLONG '('        {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
   2638      1.1  christos         OptionalNameString_First
   2639      1.1  christos         ')' '{'
   2640      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2641      1.1  christos     | PARSEOP_VENDORLONG '('
   2642      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2643      1.1  christos     ;
   2644      1.1  christos 
   2645      1.1  christos VendorShortTerm
   2646      1.1  christos     : PARSEOP_VENDORSHORT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
   2647      1.1  christos         OptionalNameString_First
   2648      1.1  christos         ')' '{'
   2649      1.1  christos             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
   2650      1.1  christos     | PARSEOP_VENDORSHORT '('
   2651      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2652      1.1  christos     ;
   2653      1.1  christos 
   2654      1.1  christos WordBusNumberTerm
   2655      1.1  christos     : PARSEOP_WORDBUSNUMBER '('     {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
   2656      1.1  christos         OptionalResourceType_First
   2657      1.1  christos         OptionalMinType
   2658      1.1  christos         OptionalMaxType
   2659      1.1  christos         OptionalDecodeType
   2660      1.1  christos         ',' WordConstExpr
   2661      1.1  christos         ',' WordConstExpr
   2662      1.1  christos         ',' WordConstExpr
   2663      1.1  christos         ',' WordConstExpr
   2664      1.1  christos         ',' WordConstExpr
   2665      1.1  christos         OptionalByteConstExpr
   2666      1.1  christos         OptionalStringData
   2667      1.1  christos         OptionalNameString_Last
   2668      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
   2669      1.1  christos     | PARSEOP_WORDBUSNUMBER '('
   2670      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2671      1.1  christos     ;
   2672      1.1  christos 
   2673      1.1  christos WordIOTerm
   2674      1.1  christos     : PARSEOP_WORDIO '('            {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
   2675      1.1  christos         OptionalResourceType_First
   2676      1.1  christos         OptionalMinType
   2677      1.1  christos         OptionalMaxType
   2678      1.1  christos         OptionalDecodeType
   2679      1.1  christos         OptionalRangeType
   2680      1.1  christos         ',' WordConstExpr
   2681      1.1  christos         ',' WordConstExpr
   2682      1.1  christos         ',' WordConstExpr
   2683      1.1  christos         ',' WordConstExpr
   2684      1.1  christos         ',' WordConstExpr
   2685      1.1  christos         OptionalByteConstExpr
   2686      1.1  christos         OptionalStringData
   2687      1.1  christos         OptionalNameString
   2688      1.1  christos         OptionalType
   2689      1.1  christos         OptionalTranslationType_Last
   2690      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
   2691      1.1  christos     | PARSEOP_WORDIO '('
   2692      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2693      1.1  christos     ;
   2694      1.1  christos 
   2695      1.1  christos WordSpaceTerm
   2696      1.1  christos     : PARSEOP_WORDSPACE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
   2697      1.1  christos         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
   2698      1.1  christos         OptionalResourceType
   2699      1.1  christos         OptionalDecodeType
   2700      1.1  christos         OptionalMinType
   2701      1.1  christos         OptionalMaxType
   2702      1.1  christos         ',' ByteConstExpr
   2703      1.1  christos         ',' WordConstExpr
   2704      1.1  christos         ',' WordConstExpr
   2705      1.1  christos         ',' WordConstExpr
   2706      1.1  christos         ',' WordConstExpr
   2707      1.1  christos         ',' WordConstExpr
   2708      1.1  christos         OptionalByteConstExpr
   2709      1.1  christos         OptionalStringData
   2710      1.1  christos         OptionalNameString_Last
   2711      1.1  christos         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
   2712      1.1  christos     | PARSEOP_WORDSPACE '('
   2713      1.1  christos         error ')'                   {$$ = AslDoError(); yyclearin;}
   2714      1.1  christos     ;
   2715      1.1  christos 
   2716      1.1  christos 
   2717      1.1  christos /******* Object References ***********************************************/
   2718      1.1  christos 
   2719      1.1  christos /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
   2720      1.1  christos 
   2721      1.1  christos NameString
   2722      1.1  christos     : NameSeg                       {}
   2723      1.1  christos     | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
   2724      1.1  christos     | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
   2725      1.1  christos     | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
   2726      1.1  christos     | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
   2727      1.1  christos     ;
   2728      1.1  christos 
   2729      1.1  christos NameSeg
   2730      1.1  christos     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
   2731      1.1  christos     ;
   2732      1.1  christos 
   2733      1.1  christos 
   2734      1.1  christos /******* Helper rules ****************************************************/
   2735      1.1  christos 
   2736      1.1  christos 
   2737      1.1  christos AmlPackageLengthTerm
   2738      1.1  christos     : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
   2739      1.1  christos     ;
   2740      1.1  christos 
   2741      1.1  christos NameStringItem
   2742      1.1  christos     : ',' NameString                {$$ = $2;}
   2743      1.1  christos     | ',' error                     {$$ = AslDoError (); yyclearin;}
   2744      1.1  christos     ;
   2745      1.1  christos 
   2746      1.1  christos TermArgItem
   2747      1.1  christos     : ',' TermArg                   {$$ = $2;}
   2748      1.1  christos     | ',' error                     {$$ = AslDoError (); yyclearin;}
   2749      1.1  christos     ;
   2750      1.1  christos 
   2751      1.1  christos OptionalBusMasterKeyword
   2752      1.1  christos     : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
   2753      1.1  christos     | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
   2754      1.1  christos     | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
   2755      1.1  christos     ;
   2756      1.1  christos 
   2757      1.1  christos OptionalAccessAttribTerm
   2758      1.1  christos     :                               {$$ = NULL;}
   2759      1.1  christos     | ','                           {$$ = NULL;}
   2760      1.1  christos     | ',' ByteConstExpr             {$$ = $2;}
   2761      1.1  christos     | ',' AccessAttribKeyword       {$$ = $2;}
   2762      1.1  christos     ;
   2763      1.1  christos 
   2764      1.1  christos OptionalAccessSize
   2765      1.1  christos     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
   2766      1.1  christos     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
   2767      1.1  christos     | ',' ByteConstExpr             {$$ = $2;}
   2768      1.1  christos     ;
   2769      1.1  christos 
   2770      1.1  christos OptionalAddressingMode
   2771      1.1  christos     : ','                           {$$ = NULL;}
   2772      1.1  christos     | ',' AddressingModeKeyword     {$$ = $2;}
   2773      1.1  christos     ;
   2774      1.1  christos 
   2775      1.1  christos OptionalAddressRange
   2776      1.1  christos     :                               {$$ = NULL;}
   2777      1.1  christos     | ','                           {$$ = NULL;}
   2778      1.1  christos     | ',' AddressKeyword            {$$ = $2;}
   2779      1.1  christos     ;
   2780      1.1  christos 
   2781      1.1  christos OptionalBitsPerByte
   2782      1.1  christos     : ','                           {$$ = NULL;}
   2783      1.1  christos     | ',' BitsPerByteKeyword        {$$ = $2;}
   2784      1.1  christos     ;
   2785      1.1  christos 
   2786      1.1  christos OptionalBuffer_Last
   2787      1.1  christos     :                               {$$ = NULL;}
   2788      1.1  christos     | ','                           {$$ = NULL;}
   2789      1.1  christos     | ',' DataBufferTerm            {$$ = $2;}
   2790      1.1  christos     ;
   2791      1.1  christos 
   2792      1.1  christos OptionalByteConstExpr
   2793      1.1  christos     :                               {$$ = NULL;}
   2794      1.1  christos     | ','                           {$$ = NULL;}
   2795      1.1  christos     | ',' ByteConstExpr             {$$ = $2;}
   2796      1.1  christos     ;
   2797      1.1  christos 
   2798      1.1  christos OptionalDecodeType
   2799      1.1  christos     : ','                           {$$ = NULL;}
   2800      1.1  christos     | ',' DecodeKeyword             {$$ = $2;}
   2801      1.1  christos     ;
   2802      1.1  christos 
   2803      1.1  christos OptionalDevicePolarity
   2804      1.1  christos     : ','                           {$$ = NULL;}
   2805      1.1  christos     | ',' DevicePolarityKeyword     {$$ = $2;}
   2806      1.1  christos     ;
   2807      1.1  christos 
   2808      1.1  christos OptionalDWordConstExpr
   2809      1.1  christos     :                               {$$ = NULL;}
   2810      1.1  christos     | ','                           {$$ = NULL;}
   2811      1.1  christos     | ',' DWordConstExpr            {$$ = $2;}
   2812      1.1  christos     ;
   2813      1.1  christos 
   2814      1.1  christos OptionalEndian
   2815      1.1  christos     : ','                           {$$ = NULL;}
   2816      1.1  christos     | ',' EndianKeyword             {$$ = $2;}
   2817      1.1  christos     ;
   2818      1.1  christos 
   2819      1.1  christos OptionalFlowControl
   2820      1.1  christos     : ','                           {$$ = NULL;}
   2821      1.1  christos     | ',' FlowControlKeyword        {$$ = $2;}
   2822      1.1  christos     ;
   2823      1.1  christos 
   2824      1.1  christos OptionalIoRestriction
   2825      1.1  christos     : ','                           {$$ = NULL;}
   2826      1.1  christos     | ',' IoRestrictionKeyword      {$$ = $2;}
   2827      1.1  christos     ;
   2828      1.1  christos 
   2829      1.1  christos OptionalListString
   2830      1.1  christos     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   2831      1.1  christos     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   2832      1.1  christos     | ',' TermArg                   {$$ = $2;}
   2833      1.1  christos     ;
   2834      1.1  christos 
   2835      1.1  christos OptionalMaxType
   2836      1.1  christos     : ','                           {$$ = NULL;}
   2837      1.1  christos     | ',' MaxKeyword                {$$ = $2;}
   2838      1.1  christos     ;
   2839      1.1  christos 
   2840      1.1  christos OptionalMemType
   2841      1.1  christos     : ','                           {$$ = NULL;}
   2842      1.1  christos     | ',' MemTypeKeyword            {$$ = $2;}
   2843      1.1  christos     ;
   2844      1.1  christos 
   2845      1.1  christos OptionalMinType
   2846      1.1  christos     : ','                           {$$ = NULL;}
   2847      1.1  christos     | ',' MinKeyword                {$$ = $2;}
   2848      1.1  christos     ;
   2849      1.1  christos 
   2850      1.1  christos OptionalNameString
   2851      1.1  christos     :                               {$$ = NULL;}
   2852      1.1  christos     | ','                           {$$ = NULL;}
   2853      1.1  christos     | ',' NameString                {$$ = $2;}
   2854      1.1  christos     ;
   2855      1.1  christos 
   2856      1.1  christos OptionalNameString_Last
   2857      1.1  christos     :                               {$$ = NULL;}
   2858      1.1  christos     | ','                           {$$ = NULL;}
   2859      1.1  christos     | ',' NameString                {$$ = $2;}
   2860      1.1  christos     ;
   2861      1.1  christos 
   2862      1.1  christos OptionalNameString_First
   2863      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
   2864      1.1  christos     | NameString                    {$$ = $1;}
   2865      1.1  christos     ;
   2866      1.1  christos 
   2867      1.1  christos OptionalObjectTypeKeyword
   2868      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
   2869      1.1  christos     | ',' ObjectTypeKeyword         {$$ = $2;}
   2870      1.1  christos     ;
   2871      1.1  christos 
   2872      1.1  christos OptionalParityType
   2873      1.1  christos     : ','                           {$$ = NULL;}
   2874      1.1  christos     | ',' ParityTypeKeyword         {$$ = $2;}
   2875      1.1  christos     ;
   2876      1.1  christos 
   2877      1.1  christos OptionalQWordConstExpr
   2878      1.1  christos     :                               {$$ = NULL;}
   2879      1.1  christos     | ','                           {$$ = NULL;}
   2880      1.1  christos     | ',' QWordConstExpr            {$$ = $2;}
   2881      1.1  christos     ;
   2882      1.1  christos 
   2883      1.1  christos OptionalRangeType
   2884      1.1  christos     : ','                           {$$ = NULL;}
   2885      1.1  christos     | ',' RangeTypeKeyword          {$$ = $2;}
   2886      1.1  christos     ;
   2887      1.1  christos 
   2888      1.1  christos OptionalReadWriteKeyword
   2889      1.1  christos     :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   2890      1.1  christos     | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   2891      1.1  christos     | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
   2892      1.1  christos     ;
   2893      1.1  christos 
   2894      1.1  christos OptionalReference
   2895      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
   2896      1.1  christos     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
   2897      1.1  christos     | ',' TermArg                   {$$ = $2;}
   2898      1.1  christos     ;
   2899      1.1  christos 
   2900      1.1  christos OptionalResourceType_First
   2901      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   2902      1.1  christos     | ResourceTypeKeyword           {$$ = $1;}
   2903      1.1  christos     ;
   2904      1.1  christos 
   2905      1.1  christos OptionalResourceType
   2906      1.1  christos     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   2907      1.1  christos     | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   2908      1.1  christos     | ',' ResourceTypeKeyword       {$$ = $2;}
   2909      1.1  christos     ;
   2910      1.1  christos 
   2911      1.1  christos OptionalReturnArg
   2912      1.1  christos     :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
   2913      1.1  christos     | TermArg                       {$$ = $1;}
   2914      1.1  christos     ;
   2915      1.1  christos 
   2916      1.1  christos OptionalSerializeRuleKeyword
   2917      1.1  christos     :                               {$$ = NULL;}
   2918      1.1  christos     | ','                           {$$ = NULL;}
   2919      1.1  christos     | ',' SerializeRuleKeyword      {$$ = $2;}
   2920      1.1  christos     ;
   2921      1.1  christos 
   2922      1.1  christos OptionalSlaveMode
   2923      1.1  christos     : ','                           {$$ = NULL;}
   2924      1.1  christos     | ',' SlaveModeKeyword          {$$ = $2;}
   2925      1.1  christos     ;
   2926      1.1  christos 
   2927      1.1  christos OptionalShareType
   2928      1.1  christos     :                               {$$ = NULL;}
   2929      1.1  christos     | ','                           {$$ = NULL;}
   2930      1.1  christos     | ',' ShareTypeKeyword          {$$ = $2;}
   2931      1.1  christos     ;
   2932      1.1  christos 
   2933      1.1  christos OptionalShareType_First
   2934      1.1  christos     :                               {$$ = NULL;}
   2935      1.1  christos     | ShareTypeKeyword              {$$ = $1;}
   2936      1.1  christos     ;
   2937      1.1  christos 
   2938      1.1  christos OptionalStopBits
   2939      1.1  christos     : ','                           {$$ = NULL;}
   2940      1.1  christos     | ',' StopBitsKeyword           {$$ = $2;}
   2941      1.1  christos     ;
   2942      1.1  christos 
   2943      1.1  christos OptionalStringData
   2944      1.1  christos     :                               {$$ = NULL;}
   2945      1.1  christos     | ','                           {$$ = NULL;}
   2946      1.1  christos     | ',' StringData                {$$ = $2;}
   2947      1.1  christos     ;
   2948      1.1  christos 
   2949      1.1  christos OptionalTermArg
   2950      1.1  christos     :                               {$$ = NULL;}
   2951      1.1  christos     | TermArg                       {$$ = $1;}
   2952      1.1  christos     ;
   2953      1.1  christos 
   2954      1.1  christos OptionalType
   2955      1.1  christos     :                               {$$ = NULL;}
   2956      1.1  christos     | ','                           {$$ = NULL;}
   2957      1.1  christos     | ',' TypeKeyword               {$$ = $2;}
   2958      1.1  christos     ;
   2959      1.1  christos 
   2960      1.1  christos OptionalType_Last
   2961      1.1  christos     :                               {$$ = NULL;}
   2962      1.1  christos     | ','                           {$$ = NULL;}
   2963      1.1  christos     | ',' TypeKeyword               {$$ = $2;}
   2964      1.1  christos     ;
   2965      1.1  christos 
   2966      1.1  christos OptionalTranslationType_Last
   2967      1.1  christos     :                               {$$ = NULL;}
   2968      1.1  christos     | ','                           {$$ = NULL;}
   2969      1.1  christos     | ',' TranslationKeyword        {$$ = $2;}
   2970      1.1  christos     ;
   2971      1.1  christos 
   2972      1.1  christos OptionalWireMode
   2973      1.1  christos     : ','                           {$$ = NULL;}
   2974      1.1  christos     | ',' WireModeKeyword           {$$ = $2;}
   2975      1.1  christos     ;
   2976      1.1  christos 
   2977      1.1  christos OptionalWordConst
   2978      1.1  christos     :                               {$$ = NULL;}
   2979      1.1  christos     | WordConst                     {$$ = $1;}
   2980      1.1  christos     ;
   2981      1.1  christos 
   2982      1.1  christos OptionalWordConstExpr
   2983      1.1  christos     : ','                           {$$ = NULL;}
   2984      1.1  christos     | ',' WordConstExpr             {$$ = $2;}
   2985      1.1  christos     ;
   2986      1.1  christos 
   2987      1.1  christos OptionalXferSize
   2988      1.1  christos     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   2989      1.1  christos     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   2990      1.1  christos     | ',' XferSizeKeyword           {$$ = $2;}
   2991      1.1  christos     ;
   2992