2 /******************************************************************************
4 * Module Name: aslrules.y - Bison/Yacc production rules
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2015, Intel Corp.
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions, and the following disclaimer,
17 * without modification.
18 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19 * substantially similar to the "NO WARRANTY" disclaimer below
20 * ("Disclaimer") and any redistribution must be conditioned upon
21 * including a substantially similar Disclaimer requirement for further
22 * binary redistribution.
23 * 3. Neither the names of the above-listed copyright holders nor the names
24 * of any contributors may be used to endorse or promote products derived
25 * from this software without specific prior written permission.
27 * Alternatively, this software may be distributed under the terms of the
28 * GNU General Public License ("GPL") version 2 as published by the Free
29 * Software Foundation.
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 * POSSIBILITY OF SUCH DAMAGES.
47 /*******************************************************************************
49 * Production rules start here
51 ******************************************************************************/
56 * Root rule. Allow multiple #line directives before the definition block
57 * to handle output from preprocessors
61 | error {YYABORT; $$ = NULL;}
65 * Blocks, Data, and Opcodes
69 * Note concerning support for "module-level code".
71 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
72 * methods (the so-called module-level code.) This support was explicitly
73 * removed in ACPI 2.0, but this type of code continues to be created by
74 * BIOS vendors. In order to support the disassembly and recompilation of
75 * such code (and the porting of ASL code to iASL), iASL supports this
76 * code in violation of the current ACPI specification.
78 * The grammar change to support module-level code is to revert the
79 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
80 * original use of {TermList} instead (see below.) This allows the use
81 * of Type1 and Type2 opcodes at module level.
84 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
91 ')' {TrSetEndLineNumber ($<n>3);}
92 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
96 * ASL Extensions: C-style math/logical operators and expressions.
97 * The implementation transforms these operators into the standard
98 * AML opcodes and syntax.
100 * Supported operators and precedence rules (high-to-low)
102 * NOTE: The operator precedence and associativity rules are
103 * implemented by the tokens in asltokens.y
106 * 1) ( ) expr++ expr--
124 * 13) = += -= *= /= %= <<= >>= &= ^= |=
128 /* Unary operators */
130 : PARSEOP_EXP_LOGICAL_NOT {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
131 TermArg {$$ = TrLinkChildren ($<n>2,1,$3);}
132 | PARSEOP_EXP_NOT {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
133 TermArg {$$ = TrLinkChildren ($<n>2,2,$3,TrCreateLeafNode (PARSEOP_ZERO));}
135 | SuperName PARSEOP_EXP_INCREMENT {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
136 {$$ = TrLinkChildren ($<n>3,1,$1);}
137 | SuperName PARSEOP_EXP_DECREMENT {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
138 {$$ = TrLinkChildren ($<n>3,1,$1);}
140 /* Binary operators: math and logical */
142 | TermArg PARSEOP_EXP_ADD {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
143 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
144 | TermArg PARSEOP_EXP_DIVIDE {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
145 TermArg {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateLeafNode (PARSEOP_ZERO),
146 TrCreateLeafNode (PARSEOP_ZERO));}
147 | TermArg PARSEOP_EXP_MODULO {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
148 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
149 | TermArg PARSEOP_EXP_MULTIPLY {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
150 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
151 | TermArg PARSEOP_EXP_SHIFT_LEFT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
152 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
153 | TermArg PARSEOP_EXP_SHIFT_RIGHT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
154 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
155 | TermArg PARSEOP_EXP_SUBTRACT {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
156 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
158 | TermArg PARSEOP_EXP_AND {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
159 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
160 | TermArg PARSEOP_EXP_OR {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
161 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
162 | TermArg PARSEOP_EXP_XOR {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
163 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateLeafNode (PARSEOP_ZERO));}
165 | TermArg PARSEOP_EXP_GREATER {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
166 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
167 | TermArg PARSEOP_EXP_GREATER_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATEREQUAL);}
168 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
169 | TermArg PARSEOP_EXP_LESS {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
170 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
171 | TermArg PARSEOP_EXP_LESS_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LLESSEQUAL);}
172 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
174 | TermArg PARSEOP_EXP_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
175 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
176 | TermArg PARSEOP_EXP_NOT_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LNOTEQUAL);}
177 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
179 | TermArg PARSEOP_EXP_LOGICAL_AND {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
180 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
181 | TermArg PARSEOP_EXP_LOGICAL_OR {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
182 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
186 | '(' TermArg ')' { $$ = $2;}
191 /* All assignment-type operations */
193 : SuperName PARSEOP_EXP_EQUALS
194 TermArg {$$ = TrCreateAssignmentNode ($1, $3);}
196 | TermArg PARSEOP_EXP_ADD_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
197 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
198 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
200 | TermArg PARSEOP_EXP_DIV_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
201 TermArg {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateLeafNode (PARSEOP_ZERO),
202 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
204 | TermArg PARSEOP_EXP_MOD_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
205 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
206 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
208 | TermArg PARSEOP_EXP_MUL_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
209 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
210 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
212 | TermArg PARSEOP_EXP_SHL_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
213 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
214 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
216 | TermArg PARSEOP_EXP_SHR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
217 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
218 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
220 | TermArg PARSEOP_EXP_SUB_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
221 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
222 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
224 | TermArg PARSEOP_EXP_AND_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
225 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
226 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
228 | TermArg PARSEOP_EXP_OR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
229 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
230 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
232 | TermArg PARSEOP_EXP_XOR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
233 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,
234 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
238 /* ACPI 3.0 -- allow semicolons between terms */
242 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
243 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
244 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
245 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
253 | Type2IntegerOpcode {}
254 | Type2StringOpcode {}
255 | Type2BufferOpcode {}
256 | Type2BufferOrStringOpcode {}
257 | error {$$ = AslDoError(); yyclearin;}
267 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
268 | error {$$ = AslDoError(); yyclearin;}
272 : CompilerDirective {}
274 | NameSpaceModifier {}
285 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
286 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
287 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
296 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
297 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
303 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
309 | CreateBitFieldTerm {}
310 | CreateByteFieldTerm {}
311 | CreateDWordFieldTerm {}
313 | CreateQWordFieldTerm {}
314 | CreateWordFieldTerm {}
336 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
337 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
343 | ArgList ',' /* Allows a trailing comma at list end */
345 TermArg {$$ = TrLinkPeerNode ($1,$3);}
349 Removed from TermArg due to reduce/reduce conflicts
350 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
351 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
352 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
353 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
358 : Expression {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
359 | Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
360 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
361 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
362 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
363 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
367 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
368 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
369 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
373 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
382 /* Rules for specifying the type of one method argument or return value */
386 | ObjectTypeKeyword {$$ = $1;}
387 | ParameterTypePackage ','
388 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
391 ParameterTypePackageList
393 | ObjectTypeKeyword {$$ = $1;}
394 | '{' ParameterTypePackage '}' {$$ = $2;}
397 OptionalParameterTypePackage
398 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
399 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
402 /* Rules for specifying the types for method arguments */
404 ParameterTypesPackage
405 : ParameterTypePackageList {$$ = $1;}
406 | ParameterTypesPackage ','
407 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
410 ParameterTypesPackageList
412 | ObjectTypeKeyword {$$ = $1;}
413 | '{' ParameterTypesPackage '}' {$$ = $2;}
416 OptionalParameterTypesPackage
417 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
418 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
463 Type2IntegerOpcode /* "Type3" opcodes */
468 | FindSetLeftBitTerm {}
469 | FindSetRightBitTerm {}
476 | LGreaterEqualTerm {}
498 Type2StringOpcode /* "Type4" Opcodes */
499 : ToDecimalStringTerm {}
504 Type2BufferOpcode /* "Type5" Opcodes */
509 Type2BufferOrStringOpcode
517 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
527 | ToDecimalStringTerm {}
536 : ResourceTemplateTerm {}
550 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
551 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
553 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
557 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
561 : PARSEOP_EXTERNAL '('
563 OptionalObjectTypeKeyword
564 OptionalParameterTypePackage
565 OptionalParameterTypesPackage
566 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
567 | PARSEOP_EXTERNAL '('
568 error ')' {$$ = AslDoError(); yyclearin;}
572 /******* Named Objects *******************************************************/
576 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
580 ',' AccessTypeKeyword
582 ',' UpdateRuleKeyword
584 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
585 | PARSEOP_BANKFIELD '('
586 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
592 | FieldUnitList ',' /* Allows a trailing comma at list end */
594 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
605 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
607 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
613 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
615 error ')' {$$ = AslDoError(); yyclearin;}
619 : PARSEOP_ACCESSAS '('
621 OptionalAccessAttribTerm
622 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
623 | PARSEOP_ACCESSAS '('
624 error ')' {$$ = AslDoError(); yyclearin;}
628 : PARSEOP_CONNECTION '('
630 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
631 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
633 ')' {$$ = TrLinkChildren ($<n>3, 1,
634 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
635 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
636 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
638 | PARSEOP_CONNECTION '('
639 error ')' {$$ = AslDoError(); yyclearin;}
643 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
647 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
648 | PARSEOP_CREATEBITFIELD '('
649 error ')' {$$ = AslDoError(); yyclearin;}
653 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
657 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
658 | PARSEOP_CREATEBYTEFIELD '('
659 error ')' {$$ = AslDoError(); yyclearin;}
663 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
667 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
668 | PARSEOP_CREATEDWORDFIELD '('
669 error ')' {$$ = AslDoError(); yyclearin;}
673 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
678 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
679 | PARSEOP_CREATEFIELD '('
680 error ')' {$$ = AslDoError(); yyclearin;}
684 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
688 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
689 | PARSEOP_CREATEQWORDFIELD '('
690 error ')' {$$ = AslDoError(); yyclearin;}
694 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
698 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
699 | PARSEOP_CREATEWORDFIELD '('
700 error ')' {$$ = AslDoError(); yyclearin;}
704 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
709 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
710 | PARSEOP_DATATABLEREGION '('
711 error ')' {$$ = AslDoError(); yyclearin;}
715 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
718 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
720 error ')' {$$ = AslDoError(); yyclearin;}
724 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
726 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
728 error ')' {$$ = AslDoError(); yyclearin;}
732 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
734 ',' AccessTypeKeyword
736 ',' UpdateRuleKeyword
738 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
740 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
744 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
746 OptionalParameterTypePackage
747 OptionalParameterTypesPackage
749 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
750 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
751 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
752 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
753 | PARSEOP_FUNCTION '('
754 error ')' {$$ = AslDoError(); yyclearin;}
758 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
761 ',' AccessTypeKeyword
763 ',' UpdateRuleKeyword
765 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
766 | PARSEOP_INDEXFIELD '('
767 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
771 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
773 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
774 OptionalSerializeRuleKeyword
775 OptionalByteConstExpr
776 OptionalParameterTypePackage
777 OptionalParameterTypesPackage
779 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
781 error ')' {$$ = AslDoError(); yyclearin;}
785 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
788 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
790 error ')' {$$ = AslDoError(); yyclearin;}
794 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
796 ',' OpRegionSpaceIdTerm
799 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
800 | PARSEOP_OPERATIONREGION '('
801 error ')' {$$ = AslDoError(); yyclearin;}
805 : RegionSpaceKeyword {}
806 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
810 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
815 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
816 | PARSEOP_POWERRESOURCE '('
817 error ')' {$$ = AslDoError(); yyclearin;}
821 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
824 OptionalDWordConstExpr
825 OptionalByteConstExpr
827 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
828 | PARSEOP_PROCESSOR '('
829 error ')' {$$ = AslDoError(); yyclearin;}
833 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
836 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
837 | PARSEOP_THERMALZONE '('
838 error ')' {$$ = AslDoError(); yyclearin;}
842 /******* Namespace modifiers *************************************************/
846 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
849 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
851 error ')' {$$ = AslDoError(); yyclearin;}
855 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
858 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
860 error ')' {$$ = AslDoError(); yyclearin;}
864 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
867 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
869 error ')' {$$ = AslDoError(); yyclearin;}
873 /******* Type 1 opcodes *******************************************************/
877 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
881 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
885 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
889 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
893 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
895 error ')' {$$ = AslDoError(); yyclearin;}
899 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
903 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
906 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
909 error ')' {$$ = AslDoError(); yyclearin;}
914 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
915 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
918 error '}' {$$ = AslDoError(); yyclearin;}
921 error {$$ = AslDoError(); yyclearin;}
923 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
924 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
926 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
927 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
928 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
931 error ')' {$$ = AslDoError(); yyclearin;}
934 error {$$ = AslDoError(); yyclearin;}
938 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
941 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
943 error ')' {$$ = AslDoError(); yyclearin;}
947 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
951 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
954 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
956 error ')' {$$ = AslDoError(); yyclearin;}
960 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
962 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
963 | PARSEOP_RELEASE '('
964 error ')' {$$ = AslDoError(); yyclearin;}
968 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
970 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
972 error ')' {$$ = AslDoError(); yyclearin;}
976 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
978 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
979 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
981 error ')' {$$ = AslDoError(); yyclearin;}
985 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
987 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
989 error ')' {$$ = AslDoError(); yyclearin;}
993 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
995 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
997 error ')' {$$ = AslDoError(); yyclearin;}
1001 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1003 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1005 error ')' {$$ = AslDoError(); yyclearin;}
1009 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1012 CaseDefaultTermList '}'
1013 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1014 | PARSEOP_SWITCH '('
1015 error ')' {$$ = AslDoError(); yyclearin;}
1019 * Case-Default list; allow only one Default term and unlimited Case terms
1026 | CaseDefaultTermList
1027 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1028 | CaseDefaultTermList
1029 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1031 /* Original - attempts to force zero or one default term within the switch */
1038 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1040 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1047 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1052 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1055 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1057 error ')' {$$ = AslDoError(); yyclearin;}
1061 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1062 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1063 | PARSEOP_DEFAULT '{'
1064 error '}' {$$ = AslDoError(); yyclearin;}
1068 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1070 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1071 | PARSEOP_UNLOAD '('
1072 error ')' {$$ = AslDoError(); yyclearin;}
1076 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1078 ')' '{' TermList '}'
1079 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1081 error ')' {$$ = AslDoError(); yyclearin;}
1085 /******* Type 2 opcodes *******************************************************/
1088 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1091 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1092 | PARSEOP_ACQUIRE '('
1093 error ')' {$$ = AslDoError(); yyclearin;}
1097 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1101 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1103 error ')' {$$ = AslDoError(); yyclearin;}
1107 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1111 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1113 error ')' {$$ = AslDoError(); yyclearin;}
1117 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1121 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1122 | PARSEOP_CONCATENATE '('
1123 error ')' {$$ = AslDoError(); yyclearin;}
1127 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1131 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1132 | PARSEOP_CONCATENATERESTEMPLATE '('
1133 error ')' {$$ = AslDoError(); yyclearin;}
1137 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1140 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1141 | PARSEOP_CONDREFOF '('
1142 error ')' {$$ = AslDoError(); yyclearin;}
1146 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1149 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1150 | PARSEOP_COPYOBJECT '('
1151 error ')' {$$ = AslDoError(); yyclearin;}
1155 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1157 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1158 | PARSEOP_DECREMENT '('
1159 error ')' {$$ = AslDoError(); yyclearin;}
1163 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1165 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1166 | PARSEOP_DEREFOF '('
1167 error ')' {$$ = AslDoError(); yyclearin;}
1171 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1176 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1177 | PARSEOP_DIVIDE '('
1178 error ')' {$$ = AslDoError(); yyclearin;}
1182 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1185 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1186 | PARSEOP_FINDSETLEFTBIT '('
1187 error ')' {$$ = AslDoError(); yyclearin;}
1191 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1194 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1195 | PARSEOP_FINDSETRIGHTBIT '('
1196 error ')' {$$ = AslDoError(); yyclearin;}
1200 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1203 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1204 | PARSEOP_FROMBCD '('
1205 error ')' {$$ = AslDoError(); yyclearin;}
1209 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1211 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1212 | PARSEOP_INCREMENT '('
1213 error ')' {$$ = AslDoError(); yyclearin;}
1217 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1221 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1223 error ')' {$$ = AslDoError(); yyclearin;}
1227 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1230 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1232 error ')' {$$ = AslDoError(); yyclearin;}
1236 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1239 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1240 | PARSEOP_LEQUAL '('
1241 error ')' {$$ = AslDoError(); yyclearin;}
1245 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1248 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1249 | PARSEOP_LGREATER '('
1250 error ')' {$$ = AslDoError(); yyclearin;}
1254 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1257 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1258 | PARSEOP_LGREATEREQUAL '('
1259 error ')' {$$ = AslDoError(); yyclearin;}
1263 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1266 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1268 error ')' {$$ = AslDoError(); yyclearin;}
1272 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1275 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1276 | PARSEOP_LLESSEQUAL '('
1277 error ')' {$$ = AslDoError(); yyclearin;}
1281 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1283 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1285 error ')' {$$ = AslDoError(); yyclearin;}
1289 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1292 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1293 | PARSEOP_LNOTEQUAL '('
1294 error ')' {$$ = AslDoError(); yyclearin;}
1298 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1305 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1306 | PARSEOP_LOADTABLE '('
1307 error ')' {$$ = AslDoError(); yyclearin;}
1311 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1314 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1316 error ')' {$$ = AslDoError(); yyclearin;}
1320 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1327 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1329 error ')' {$$ = AslDoError(); yyclearin;}
1333 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1338 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1340 error ')' {$$ = AslDoError(); yyclearin;}
1344 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1348 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1350 error ')' {$$ = AslDoError(); yyclearin;}
1354 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1358 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1359 | PARSEOP_MULTIPLY '('
1360 error ')' {$$ = AslDoError(); yyclearin;}
1364 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1368 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1370 error ')' {$$ = AslDoError(); yyclearin;}
1374 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1378 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1380 error ')' {$$ = AslDoError(); yyclearin;}
1384 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1387 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1389 error ')' {$$ = AslDoError(); yyclearin;}
1393 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1395 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1396 | PARSEOP_OBJECTTYPE '('
1397 error ')' {$$ = AslDoError(); yyclearin;}
1401 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1405 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1407 error ')' {$$ = AslDoError(); yyclearin;}
1411 * In RefOf, the node isn't really a target, but we can't keep track of it after
1412 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1415 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1417 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1419 error ')' {$$ = AslDoError(); yyclearin;}
1423 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1427 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1428 | PARSEOP_SHIFTLEFT '('
1429 error ')' {$$ = AslDoError(); yyclearin;}
1433 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1437 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1438 | PARSEOP_SHIFTRIGHT '('
1439 error ')' {$$ = AslDoError(); yyclearin;}
1443 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1445 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1446 | PARSEOP_SIZEOF '('
1447 error ')' {$$ = AslDoError(); yyclearin;}
1451 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1454 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1456 error ')' {$$ = AslDoError(); yyclearin;}
1460 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1464 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1465 | PARSEOP_SUBTRACT '('
1466 error ')' {$$ = AslDoError(); yyclearin;}
1470 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1471 ')' {$$ = TrLinkChildren ($<n>3,0);}
1472 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1474 error ')' {$$ = AslDoError(); yyclearin;}
1478 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1481 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1483 error ')' {$$ = AslDoError(); yyclearin;}
1487 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1490 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1491 | PARSEOP_TOBUFFER '('
1492 error ')' {$$ = AslDoError(); yyclearin;}
1496 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1499 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1500 | PARSEOP_TODECIMALSTRING '('
1501 error ')' {$$ = AslDoError(); yyclearin;}
1505 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1508 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1509 | PARSEOP_TOHEXSTRING '('
1510 error ')' {$$ = AslDoError(); yyclearin;}
1514 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1517 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1518 | PARSEOP_TOINTEGER '('
1519 error ')' {$$ = AslDoError(); yyclearin;}
1523 : PARSEOP_PLD_REVISION {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
1524 | PARSEOP_PLD_IGNORECOLOR {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
1525 | PARSEOP_PLD_RED {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
1526 | PARSEOP_PLD_GREEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
1527 | PARSEOP_PLD_BLUE {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
1528 | PARSEOP_PLD_WIDTH {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
1529 | PARSEOP_PLD_HEIGHT {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
1530 | PARSEOP_PLD_USERVISIBLE {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
1531 | PARSEOP_PLD_DOCK {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
1532 | PARSEOP_PLD_LID {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
1533 | PARSEOP_PLD_PANEL {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
1534 | PARSEOP_PLD_VERTICALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
1535 | PARSEOP_PLD_HORIZONTALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
1536 | PARSEOP_PLD_SHAPE {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
1537 | PARSEOP_PLD_GROUPORIENTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
1538 | PARSEOP_PLD_GROUPTOKEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
1539 | PARSEOP_PLD_GROUPPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
1540 | PARSEOP_PLD_BAY {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
1541 | PARSEOP_PLD_EJECTABLE {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
1542 | PARSEOP_PLD_EJECTREQUIRED {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
1543 | PARSEOP_PLD_CABINETNUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
1544 | PARSEOP_PLD_CARDCAGENUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
1545 | PARSEOP_PLD_REFERENCE {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
1546 | PARSEOP_PLD_ROTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
1547 | PARSEOP_PLD_ORDER {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
1548 | PARSEOP_PLD_RESERVED {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
1549 | PARSEOP_PLD_VERTICALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
1550 | PARSEOP_PLD_HORIZONTALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
1556 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);}
1558 PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);}
1559 | PldKeywordList ',' /* Allows a trailing comma at list end */
1560 | PldKeywordList ','
1562 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1563 | PldKeywordList ','
1565 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1569 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
1571 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1573 error ')' {$$ = AslDoError(); yyclearin;}
1578 | TermArg {$$ = $1;}
1580 TermArg {$$ = TrLinkPeerNode ($1, $3);}
1584 : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
1587 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1588 | PARSEOP_PRINTF '('
1589 error ')' {$$ = AslDoError(); yyclearin;}
1593 : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
1597 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1598 | PARSEOP_FPRINTF '('
1599 error ')' {$$ = AslDoError(); yyclearin;}
1603 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1607 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1608 | PARSEOP_TOSTRING '('
1609 error ')' {$$ = AslDoError(); yyclearin;}
1613 : PARSEOP_TOUUID '('
1614 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1615 | PARSEOP_TOUUID '('
1616 error ')' {$$ = AslDoError(); yyclearin;}
1620 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1623 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1625 error ')' {$$ = AslDoError(); yyclearin;}
1629 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1633 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1635 error ')' {$$ = AslDoError(); yyclearin;}
1639 /******* Keywords *************************************************************/
1643 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
1644 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
1645 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
1646 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
1647 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
1648 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
1649 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
1650 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
1652 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1653 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
1655 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1656 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
1658 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1662 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
1663 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
1664 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
1665 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
1666 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
1667 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
1670 AddressingModeKeyword
1671 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
1672 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
1676 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
1677 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
1678 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
1679 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
1683 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
1684 | RegionSpaceKeyword {}
1688 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
1689 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
1690 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
1691 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
1692 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
1696 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
1697 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
1700 ClockPolarityKeyword
1701 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
1702 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
1706 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
1707 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
1710 DevicePolarityKeyword
1711 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
1712 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
1716 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
1717 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
1718 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
1719 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
1723 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
1724 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
1728 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
1729 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
1730 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
1734 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
1735 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
1736 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
1739 InterruptTypeKeyword
1740 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
1741 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
1745 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
1746 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
1749 IoRestrictionKeyword
1750 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
1751 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
1752 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
1753 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
1757 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
1758 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
1762 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
1763 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
1764 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
1765 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
1766 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
1767 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
1771 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
1772 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
1776 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
1777 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
1778 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
1779 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
1783 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
1784 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
1788 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
1789 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
1790 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
1791 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
1792 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
1793 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
1794 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
1795 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
1796 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
1797 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
1798 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
1799 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
1800 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
1801 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
1802 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
1803 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
1807 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
1808 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
1809 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
1810 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
1811 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
1815 : PinConfigKeyword {$$ = $1;}
1816 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1820 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
1821 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
1822 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
1823 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
1827 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
1828 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
1829 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
1833 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
1834 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
1835 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
1836 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
1837 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
1838 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
1839 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
1840 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
1841 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
1842 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
1843 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
1844 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
1848 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1849 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
1852 SerializeRuleKeyword
1853 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
1854 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
1858 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
1859 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
1860 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
1861 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
1865 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
1866 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
1870 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
1871 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
1872 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
1873 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
1877 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
1878 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
1882 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
1883 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
1887 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
1888 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
1889 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
1893 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
1894 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
1898 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
1899 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
1900 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
1901 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
1902 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
1903 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
1907 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
1908 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
1909 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
1913 /******* Miscellaneous Types **************************************************/
1923 /* For ObjectType: SuperName except for UserTerm (method invocation) */
1934 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
1938 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
1939 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
1940 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
1941 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
1942 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
1943 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
1944 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
1948 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1949 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1950 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1951 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1952 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1953 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1954 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1955 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1959 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
1964 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
1968 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
1972 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
1976 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
1980 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
1984 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
1989 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
1993 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
1994 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
1995 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
1996 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
1997 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
1998 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
1999 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2003 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
2004 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
2005 * to simple integers. It is an error if these types of expressions cannot be
2006 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
2007 * Note: The required byte length of the constant is passed through to the
2008 * constant folding code in the node AmlLength field.
2011 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
2012 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
2013 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2018 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
2019 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
2020 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2025 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
2026 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
2027 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2032 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
2033 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
2034 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2038 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2041 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2042 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2043 | ',' TermArg {$$ = $2;}
2047 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2050 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2051 | PARSEOP_BUFFER '('
2052 error ')' {$$ = AslDoError(); yyclearin;}
2063 | ByteList ',' /* Allows a trailing comma at list end */
2065 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2069 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2072 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2073 | PARSEOP_DATABUFFER '('
2074 error ')' {$$ = AslDoError(); yyclearin;}
2080 | DWordList ',' /* Allows a trailing comma at list end */
2082 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2086 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2087 VarPackageLengthTerm
2089 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2090 | PARSEOP_PACKAGE '('
2091 error ')' {$$ = AslDoError(); yyclearin;}
2097 | PackageList ',' /* Allows a trailing comma at list end */
2099 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2107 VarPackageLengthTerm
2108 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2109 | TermArg {$$ = $1;}
2113 /******* Macros ***********************************************/
2117 : PARSEOP_EISAID '('
2118 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2119 | PARSEOP_EISAID '('
2120 error ')' {$$ = AslDoError(); yyclearin;}
2124 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2126 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2127 | PARSEOP_UNICODE '('
2128 error ')' {$$ = AslDoError(); yyclearin;}
2132 /******* Resources and Memory ***********************************************/
2136 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2137 * Also, insert the EndTag at the end of the template.
2139 ResourceTemplateTerm
2140 : PARSEOP_RESOURCETEMPLATE '(' ')'
2142 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2143 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2144 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2146 TrCreateLeafNode (PARSEOP_ENDTAG));}
2152 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2158 | DWordMemoryTerm {}
2160 | EndDependentFnTerm {}
2162 | ExtendedMemoryTerm {}
2163 | ExtendedSpaceTerm {}
2168 | I2cSerialBusTerm {}
2174 | Memory32FixedTerm {}
2177 | QWordMemoryTerm {}
2180 | SpiSerialBusTerm {}
2181 | StartDependentFnNoPriTerm {}
2182 | StartDependentFnTerm {}
2183 | UartSerialBusTerm {}
2185 | VendorShortTerm {}
2186 | WordBusNumberTerm {}
2192 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2194 OptionalBusMasterKeyword
2196 OptionalNameString_Last
2198 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2200 error ')' {$$ = AslDoError(); yyclearin;}
2204 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2205 OptionalResourceType_First
2215 OptionalByteConstExpr
2219 OptionalTranslationType_Last
2220 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2221 | PARSEOP_DWORDIO '('
2222 error ')' {$$ = AslDoError(); yyclearin;}
2226 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2227 OptionalResourceType_First
2232 ',' OptionalReadWriteKeyword
2238 OptionalByteConstExpr
2241 OptionalAddressRange
2243 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2244 | PARSEOP_DWORDMEMORY '('
2245 error ')' {$$ = AslDoError(); yyclearin;}
2249 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2250 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2251 OptionalResourceType
2261 OptionalByteConstExpr
2263 OptionalNameString_Last
2264 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2265 | PARSEOP_DWORDSPACE '('
2266 error ')' {$$ = AslDoError(); yyclearin;}
2271 : PARSEOP_ENDDEPENDENTFN '('
2272 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2273 | PARSEOP_ENDDEPENDENTFN '('
2274 error ')' {$$ = AslDoError(); yyclearin;}
2278 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2279 OptionalResourceType_First
2289 OptionalQWordConstExpr
2292 OptionalTranslationType_Last
2293 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2294 | PARSEOP_EXTENDEDIO '('
2295 error ')' {$$ = AslDoError(); yyclearin;}
2299 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2300 OptionalResourceType_First
2305 ',' OptionalReadWriteKeyword
2311 OptionalQWordConstExpr
2313 OptionalAddressRange
2315 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2316 | PARSEOP_EXTENDEDMEMORY '('
2317 error ')' {$$ = AslDoError(); yyclearin;}
2321 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2322 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2323 OptionalResourceType
2333 OptionalQWordConstExpr
2334 OptionalNameString_Last
2335 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2336 | PARSEOP_EXTENDEDSPACE '('
2337 error ')' {$$ = AslDoError(); yyclearin;}
2341 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2342 WordConstExpr /* 04: DMA RequestLines */
2343 ',' WordConstExpr /* 06: DMA Channels */
2344 OptionalXferSize /* 07: DMA TransferSize */
2345 OptionalNameString /* 08: DescriptorName */
2346 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2347 | PARSEOP_FIXEDDMA '('
2348 error ')' {$$ = AslDoError(); yyclearin;}
2352 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2355 OptionalNameString_Last
2356 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2357 | PARSEOP_FIXEDIO '('
2358 error ')' {$$ = AslDoError(); yyclearin;}
2362 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2363 InterruptTypeKeyword /* 04: InterruptType */
2364 ',' InterruptLevel /* 06: InterruptLevel */
2365 OptionalShareType /* 07: SharedType */
2366 ',' PinConfigByte /* 09: PinConfig */
2367 OptionalWordConstExpr /* 10: DebounceTimeout */
2368 ',' StringData /* 12: ResourceSource */
2369 OptionalByteConstExpr /* 13: ResourceSourceIndex */
2370 OptionalResourceType /* 14: ResourceType */
2371 OptionalNameString /* 15: DescriptorName */
2372 OptionalBuffer_Last /* 16: VendorData */
2374 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2375 | PARSEOP_GPIO_INT '('
2376 error ')' {$$ = AslDoError(); yyclearin;}
2380 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2381 OptionalShareType_First /* 04: SharedType */
2382 ',' PinConfigByte /* 06: PinConfig */
2383 OptionalWordConstExpr /* 07: DebounceTimeout */
2384 OptionalWordConstExpr /* 08: DriveStrength */
2385 OptionalIoRestriction /* 09: IoRestriction */
2386 ',' StringData /* 11: ResourceSource */
2387 OptionalByteConstExpr /* 12: ResourceSourceIndex */
2388 OptionalResourceType /* 13: ResourceType */
2389 OptionalNameString /* 14: DescriptorName */
2390 OptionalBuffer_Last /* 15: VendorData */
2392 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2393 | PARSEOP_GPIO_IO '('
2394 error ')' {$$ = AslDoError(); yyclearin;}
2398 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2399 WordConstExpr /* 04: SlaveAddress */
2400 OptionalSlaveMode /* 05: SlaveMode */
2401 ',' DWordConstExpr /* 07: ConnectionSpeed */
2402 OptionalAddressingMode /* 08: AddressingMode */
2403 ',' StringData /* 10: ResourceSource */
2404 OptionalByteConstExpr /* 11: ResourceSourceIndex */
2405 OptionalResourceType /* 12: ResourceType */
2406 OptionalNameString /* 13: DescriptorName */
2407 OptionalBuffer_Last /* 14: VendorData */
2408 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2409 | PARSEOP_I2C_SERIALBUS '('
2410 error ')' {$$ = AslDoError(); yyclearin;}
2414 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2415 OptionalResourceType_First
2416 ',' InterruptTypeKeyword
2419 OptionalByteConstExpr
2421 OptionalNameString_Last
2423 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2424 | PARSEOP_INTERRUPT '('
2425 error ')' {$$ = AslDoError(); yyclearin;}
2429 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2435 OptionalNameString_Last
2436 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2438 error ')' {$$ = AslDoError(); yyclearin;}
2442 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2443 OptionalNameString_First
2445 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2446 | PARSEOP_IRQNOFLAGS '('
2447 error ')' {$$ = AslDoError(); yyclearin;}
2451 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2452 InterruptTypeKeyword
2455 OptionalNameString_Last
2457 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2459 error ')' {$$ = AslDoError(); yyclearin;}
2463 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2464 OptionalReadWriteKeyword
2469 OptionalNameString_Last
2470 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2471 | PARSEOP_MEMORY24 '('
2472 error ')' {$$ = AslDoError(); yyclearin;}
2476 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2477 OptionalReadWriteKeyword
2480 OptionalNameString_Last
2481 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2482 | PARSEOP_MEMORY32FIXED '('
2483 error ')' {$$ = AslDoError(); yyclearin;}
2487 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2488 OptionalReadWriteKeyword
2493 OptionalNameString_Last
2494 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2495 | PARSEOP_MEMORY32 '('
2496 error ')' {$$ = AslDoError(); yyclearin;}
2500 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2501 OptionalResourceType_First
2511 OptionalByteConstExpr
2515 OptionalTranslationType_Last
2516 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2517 | PARSEOP_QWORDIO '('
2518 error ')' {$$ = AslDoError(); yyclearin;}
2522 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2523 OptionalResourceType_First
2528 ',' OptionalReadWriteKeyword
2534 OptionalByteConstExpr
2537 OptionalAddressRange
2539 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2540 | PARSEOP_QWORDMEMORY '('
2541 error ')' {$$ = AslDoError(); yyclearin;}
2545 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2546 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2547 OptionalResourceType
2557 OptionalByteConstExpr
2559 OptionalNameString_Last
2560 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2561 | PARSEOP_QWORDSPACE '('
2562 error ')' {$$ = AslDoError(); yyclearin;}
2566 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2572 OptionalNameString_Last
2573 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
2574 | PARSEOP_REGISTER '('
2575 error ')' {$$ = AslDoError(); yyclearin;}
2579 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
2580 WordConstExpr /* 04: DeviceSelection */
2581 OptionalDevicePolarity /* 05: DevicePolarity */
2582 OptionalWireMode /* 06: WireMode */
2583 ',' ByteConstExpr /* 08: DataBitLength */
2584 OptionalSlaveMode /* 09: SlaveMode */
2585 ',' DWordConstExpr /* 11: ConnectionSpeed */
2586 ',' ClockPolarityKeyword /* 13: ClockPolarity */
2587 ',' ClockPhaseKeyword /* 15: ClockPhase */
2588 ',' StringData /* 17: ResourceSource */
2589 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2590 OptionalResourceType /* 19: ResourceType */
2591 OptionalNameString /* 20: DescriptorName */
2592 OptionalBuffer_Last /* 21: VendorData */
2593 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
2594 | PARSEOP_SPI_SERIALBUS '('
2595 error ')' {$$ = AslDoError(); yyclearin;}
2598 StartDependentFnNoPriTerm
2599 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2601 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
2602 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2603 error ')' {$$ = AslDoError(); yyclearin;}
2606 StartDependentFnTerm
2607 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2611 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2612 | PARSEOP_STARTDEPENDENTFN '('
2613 error ')' {$$ = AslDoError(); yyclearin;}
2617 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
2618 DWordConstExpr /* 04: ConnectionSpeed */
2619 OptionalBitsPerByte /* 05: BitsPerByte */
2620 OptionalStopBits /* 06: StopBits */
2621 ',' ByteConstExpr /* 08: LinesInUse */
2622 OptionalEndian /* 09: Endianess */
2623 OptionalParityType /* 10: Parity */
2624 OptionalFlowControl /* 11: FlowControl */
2625 ',' WordConstExpr /* 13: Rx BufferSize */
2626 ',' WordConstExpr /* 15: Tx BufferSize */
2627 ',' StringData /* 17: ResourceSource */
2628 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2629 OptionalResourceType /* 19: ResourceType */
2630 OptionalNameString /* 20: DescriptorName */
2631 OptionalBuffer_Last /* 21: VendorData */
2632 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
2633 | PARSEOP_UART_SERIALBUS '('
2634 error ')' {$$ = AslDoError(); yyclearin;}
2638 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2639 OptionalNameString_First
2641 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2642 | PARSEOP_VENDORLONG '('
2643 error ')' {$$ = AslDoError(); yyclearin;}
2647 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2648 OptionalNameString_First
2650 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2651 | PARSEOP_VENDORSHORT '('
2652 error ')' {$$ = AslDoError(); yyclearin;}
2656 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2657 OptionalResourceType_First
2666 OptionalByteConstExpr
2668 OptionalNameString_Last
2669 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2670 | PARSEOP_WORDBUSNUMBER '('
2671 error ')' {$$ = AslDoError(); yyclearin;}
2675 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2676 OptionalResourceType_First
2686 OptionalByteConstExpr
2690 OptionalTranslationType_Last
2691 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2692 | PARSEOP_WORDIO '('
2693 error ')' {$$ = AslDoError(); yyclearin;}
2697 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2698 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2699 OptionalResourceType
2709 OptionalByteConstExpr
2711 OptionalNameString_Last
2712 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2713 | PARSEOP_WORDSPACE '('
2714 error ')' {$$ = AslDoError(); yyclearin;}
2718 /******* Object References ***********************************************/
2720 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
2724 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2725 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
2726 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
2727 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
2731 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2735 /******* Helper rules ****************************************************/
2738 AmlPackageLengthTerm
2739 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2743 : ',' NameString {$$ = $2;}
2744 | ',' error {$$ = AslDoError (); yyclearin;}
2748 : ',' TermArg {$$ = $2;}
2749 | ',' error {$$ = AslDoError (); yyclearin;}
2752 OptionalBusMasterKeyword
2753 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2754 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2755 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2758 OptionalAccessAttribTerm
2761 | ',' ByteConstExpr {$$ = $2;}
2762 | ',' AccessAttribKeyword {$$ = $2;}
2766 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2767 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2768 | ',' ByteConstExpr {$$ = $2;}
2771 OptionalAddressingMode
2773 | ',' AddressingModeKeyword {$$ = $2;}
2776 OptionalAddressRange
2779 | ',' AddressKeyword {$$ = $2;}
2784 | ',' BitsPerByteKeyword {$$ = $2;}
2790 | ',' DataBufferTerm {$$ = $2;}
2793 OptionalByteConstExpr
2796 | ',' ByteConstExpr {$$ = $2;}
2801 | ',' DecodeKeyword {$$ = $2;}
2804 OptionalDevicePolarity
2806 | ',' DevicePolarityKeyword {$$ = $2;}
2809 OptionalDWordConstExpr
2812 | ',' DWordConstExpr {$$ = $2;}
2817 | ',' EndianKeyword {$$ = $2;}
2822 | ',' FlowControlKeyword {$$ = $2;}
2825 OptionalIoRestriction
2827 | ',' IoRestrictionKeyword {$$ = $2;}
2831 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2832 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2833 | ',' TermArg {$$ = $2;}
2838 | ',' MaxKeyword {$$ = $2;}
2843 | ',' MemTypeKeyword {$$ = $2;}
2848 | ',' MinKeyword {$$ = $2;}
2854 | ',' NameString {$$ = $2;}
2857 OptionalNameString_Last
2860 | ',' NameString {$$ = $2;}
2863 OptionalNameString_First
2864 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
2865 | NameString {$$ = $1;}
2868 OptionalObjectTypeKeyword
2869 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2870 | ',' ObjectTypeKeyword {$$ = $2;}
2875 | ',' ParityTypeKeyword {$$ = $2;}
2878 OptionalQWordConstExpr
2881 | ',' QWordConstExpr {$$ = $2;}
2886 | ',' RangeTypeKeyword {$$ = $2;}
2889 OptionalReadWriteKeyword
2890 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2891 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2892 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2896 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2897 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2898 | ',' TermArg {$$ = $2;}
2901 OptionalResourceType_First
2902 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2903 | ResourceTypeKeyword {$$ = $1;}
2906 OptionalResourceType
2907 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2908 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2909 | ',' ResourceTypeKeyword {$$ = $2;}
2913 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
2914 | TermArg {$$ = $1;}
2917 OptionalSerializeRuleKeyword
2920 | ',' SerializeRuleKeyword {$$ = $2;}
2925 | ',' SlaveModeKeyword {$$ = $2;}
2931 | ',' ShareTypeKeyword {$$ = $2;}
2934 OptionalShareType_First
2936 | ShareTypeKeyword {$$ = $1;}
2941 | ',' StopBitsKeyword {$$ = $2;}
2947 | ',' StringData {$$ = $2;}
2952 | TermArg {$$ = $1;}
2958 | ',' TypeKeyword {$$ = $2;}
2964 | ',' TypeKeyword {$$ = $2;}
2967 OptionalTranslationType_Last
2970 | ',' TranslationKeyword {$$ = $2;}
2975 | ',' WireModeKeyword {$$ = $2;}
2980 | WordConst {$$ = $1;}
2983 OptionalWordConstExpr
2985 | ',' WordConstExpr {$$ = $2;}
2989 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2990 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2991 | ',' XferSizeKeyword {$$ = $2;}