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,TrCreateNullTarget ());}
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,TrCreateNullTarget ());}
144 | TermArg PARSEOP_EXP_DIVIDE {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
145 TermArg {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateNullTarget (),
146 TrCreateNullTarget ());}
147 | TermArg PARSEOP_EXP_MODULO {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
148 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
149 | TermArg PARSEOP_EXP_MULTIPLY {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
150 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
151 | TermArg PARSEOP_EXP_SHIFT_LEFT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
152 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
153 | TermArg PARSEOP_EXP_SHIFT_RIGHT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
154 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
155 | TermArg PARSEOP_EXP_SUBTRACT {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
156 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
158 | TermArg PARSEOP_EXP_AND {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
159 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
160 | TermArg PARSEOP_EXP_OR {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
161 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
162 | TermArg PARSEOP_EXP_XOR {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
163 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());}
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,TrCreateNullTarget (),
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);}
252 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
253 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
254 | Type2BufferOpcode {}
255 | Type2BufferOrStringOpcode {}
256 | error {$$ = AslDoError(); yyclearin;}
266 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
267 | error {$$ = AslDoError(); yyclearin;}
271 : CompilerDirective {}
273 | NameSpaceModifier {}
284 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
285 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
286 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
295 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
296 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
302 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
308 | CreateBitFieldTerm {}
309 | CreateByteFieldTerm {}
310 | CreateDWordFieldTerm {}
312 | CreateQWordFieldTerm {}
313 | CreateWordFieldTerm {}
335 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
336 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
342 | ArgList ',' /* Allows a trailing comma at list end */
344 TermArg {$$ = TrLinkPeerNode ($1,$3);}
348 Removed from TermArg due to reduce/reduce conflicts
349 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
350 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
351 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
352 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
357 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
358 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
359 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
360 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
361 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
365 : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
366 | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
367 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
371 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
380 /* Rules for specifying the type of one method argument or return value */
384 | ObjectTypeKeyword {$$ = $1;}
385 | ParameterTypePackage ','
386 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
389 ParameterTypePackageList
391 | ObjectTypeKeyword {$$ = $1;}
392 | '{' ParameterTypePackage '}' {$$ = $2;}
395 OptionalParameterTypePackage
396 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
397 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
400 /* Rules for specifying the types for method arguments */
402 ParameterTypesPackage
403 : ParameterTypePackageList {$$ = $1;}
404 | ParameterTypesPackage ','
405 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
408 ParameterTypesPackageList
410 | ObjectTypeKeyword {$$ = $1;}
411 | '{' ParameterTypesPackage '}' {$$ = $2;}
414 OptionalParameterTypesPackage
415 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
416 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
454 | MethodInvocationTerm {}
461 Type2IntegerOpcode /* "Type3" opcodes */
462 : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
467 | FindSetLeftBitTerm {}
468 | FindSetRightBitTerm {}
475 | LGreaterEqualTerm {}
497 Type2StringOpcode /* "Type4" Opcodes */
498 : ToDecimalStringTerm {}
503 Type2BufferOpcode /* "Type5" Opcodes */
508 Type2BufferOrStringOpcode
509 : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
516 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
526 | ToDecimalStringTerm {}
535 : ResourceTemplateTerm {}
545 | MethodInvocationTerm {}
549 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
550 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
552 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
556 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
560 : PARSEOP_EXTERNAL '('
562 OptionalObjectTypeKeyword
563 OptionalParameterTypePackage
564 OptionalParameterTypesPackage
565 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
566 | PARSEOP_EXTERNAL '('
567 error ')' {$$ = AslDoError(); yyclearin;}
571 /******* Named Objects *******************************************************/
575 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
579 ',' AccessTypeKeyword
581 ',' UpdateRuleKeyword
583 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
584 | PARSEOP_BANKFIELD '('
585 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
591 | FieldUnitList ',' /* Allows a trailing comma at list end */
593 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
604 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
606 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
612 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
614 error ')' {$$ = AslDoError(); yyclearin;}
618 : PARSEOP_ACCESSAS '('
620 OptionalAccessAttribTerm
621 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
622 | PARSEOP_ACCESSAS '('
623 error ')' {$$ = AslDoError(); yyclearin;}
627 : PARSEOP_CONNECTION '('
629 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
630 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
632 ')' {$$ = TrLinkChildren ($<n>3, 1,
633 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
634 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
635 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
637 | PARSEOP_CONNECTION '('
638 error ')' {$$ = AslDoError(); yyclearin;}
642 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
646 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
647 | PARSEOP_CREATEBITFIELD '('
648 error ')' {$$ = AslDoError(); yyclearin;}
652 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
656 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
657 | PARSEOP_CREATEBYTEFIELD '('
658 error ')' {$$ = AslDoError(); yyclearin;}
662 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
666 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
667 | PARSEOP_CREATEDWORDFIELD '('
668 error ')' {$$ = AslDoError(); yyclearin;}
672 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
677 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
678 | PARSEOP_CREATEFIELD '('
679 error ')' {$$ = AslDoError(); yyclearin;}
683 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
687 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
688 | PARSEOP_CREATEQWORDFIELD '('
689 error ')' {$$ = AslDoError(); yyclearin;}
693 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
697 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
698 | PARSEOP_CREATEWORDFIELD '('
699 error ')' {$$ = AslDoError(); yyclearin;}
703 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
708 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
709 | PARSEOP_DATATABLEREGION '('
710 error ')' {$$ = AslDoError(); yyclearin;}
714 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
717 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
719 error ')' {$$ = AslDoError(); yyclearin;}
723 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
725 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
727 error ')' {$$ = AslDoError(); yyclearin;}
731 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
733 ',' AccessTypeKeyword
735 ',' UpdateRuleKeyword
737 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
739 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
743 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
745 OptionalParameterTypePackage
746 OptionalParameterTypesPackage
748 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
749 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
750 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
751 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
752 | PARSEOP_FUNCTION '('
753 error ')' {$$ = AslDoError(); yyclearin;}
757 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
760 ',' AccessTypeKeyword
762 ',' UpdateRuleKeyword
764 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
765 | PARSEOP_INDEXFIELD '('
766 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
770 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
772 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
773 OptionalSerializeRuleKeyword
774 OptionalByteConstExpr
775 OptionalParameterTypePackage
776 OptionalParameterTypesPackage
778 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
780 error ')' {$$ = AslDoError(); yyclearin;}
784 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
787 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
789 error ')' {$$ = AslDoError(); yyclearin;}
793 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
795 ',' OpRegionSpaceIdTerm
798 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
799 | PARSEOP_OPERATIONREGION '('
800 error ')' {$$ = AslDoError(); yyclearin;}
804 : RegionSpaceKeyword {}
805 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
809 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
814 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
815 | PARSEOP_POWERRESOURCE '('
816 error ')' {$$ = AslDoError(); yyclearin;}
820 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
823 OptionalDWordConstExpr
824 OptionalByteConstExpr
826 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
827 | PARSEOP_PROCESSOR '('
828 error ')' {$$ = AslDoError(); yyclearin;}
832 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
835 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
836 | PARSEOP_THERMALZONE '('
837 error ')' {$$ = AslDoError(); yyclearin;}
841 /******* Namespace modifiers *************************************************/
845 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
848 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
850 error ')' {$$ = AslDoError(); yyclearin;}
854 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
857 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
859 error ')' {$$ = AslDoError(); yyclearin;}
863 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
866 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
868 error ')' {$$ = AslDoError(); yyclearin;}
872 /******* Type 1 opcodes *******************************************************/
876 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
880 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
884 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
888 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
892 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
894 error ')' {$$ = AslDoError(); yyclearin;}
898 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
902 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
905 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
908 error ')' {$$ = AslDoError(); yyclearin;}
913 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
914 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
917 error '}' {$$ = AslDoError(); yyclearin;}
920 error {$$ = AslDoError(); yyclearin;}
922 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
923 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
925 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
926 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
927 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
930 error ')' {$$ = AslDoError(); yyclearin;}
933 error {$$ = AslDoError(); yyclearin;}
937 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
940 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
942 error ')' {$$ = AslDoError(); yyclearin;}
946 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
950 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
953 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
955 error ')' {$$ = AslDoError(); yyclearin;}
959 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
961 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
962 | PARSEOP_RELEASE '('
963 error ')' {$$ = AslDoError(); yyclearin;}
967 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
969 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
971 error ')' {$$ = AslDoError(); yyclearin;}
975 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
977 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
978 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
980 error ')' {$$ = AslDoError(); yyclearin;}
984 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
986 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
988 error ')' {$$ = AslDoError(); yyclearin;}
992 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
994 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
996 error ')' {$$ = AslDoError(); yyclearin;}
1000 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1002 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1004 error ')' {$$ = AslDoError(); yyclearin;}
1008 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1011 CaseDefaultTermList '}'
1012 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1013 | PARSEOP_SWITCH '('
1014 error ')' {$$ = AslDoError(); yyclearin;}
1018 * Case-Default list; allow only one Default term and unlimited Case terms
1025 | CaseDefaultTermList
1026 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1027 | CaseDefaultTermList
1028 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1030 /* Original - attempts to force zero or one default term within the switch */
1037 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1039 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1046 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1051 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1054 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1056 error ')' {$$ = AslDoError(); yyclearin;}
1060 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1061 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1062 | PARSEOP_DEFAULT '{'
1063 error '}' {$$ = AslDoError(); yyclearin;}
1067 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1069 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1070 | PARSEOP_UNLOAD '('
1071 error ')' {$$ = AslDoError(); yyclearin;}
1075 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1077 ')' '{' TermList '}'
1078 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1080 error ')' {$$ = AslDoError(); yyclearin;}
1084 /******* Type 2 opcodes *******************************************************/
1087 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1091 | PARSEOP_ACQUIRE '('
1092 error ')' {$$ = AslDoError(); yyclearin;}
1096 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1100 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1102 error ')' {$$ = AslDoError(); yyclearin;}
1106 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1110 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1112 error ')' {$$ = AslDoError(); yyclearin;}
1116 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1120 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1121 | PARSEOP_CONCATENATE '('
1122 error ')' {$$ = AslDoError(); yyclearin;}
1126 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1130 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1131 | PARSEOP_CONCATENATERESTEMPLATE '('
1132 error ')' {$$ = AslDoError(); yyclearin;}
1136 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1139 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1140 | PARSEOP_CONDREFOF '('
1141 error ')' {$$ = AslDoError(); yyclearin;}
1145 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1148 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1149 | PARSEOP_COPYOBJECT '('
1150 error ')' {$$ = AslDoError(); yyclearin;}
1154 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1156 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1157 | PARSEOP_DECREMENT '('
1158 error ')' {$$ = AslDoError(); yyclearin;}
1162 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1164 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1165 | PARSEOP_DEREFOF '('
1166 error ')' {$$ = AslDoError(); yyclearin;}
1170 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1175 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1176 | PARSEOP_DIVIDE '('
1177 error ')' {$$ = AslDoError(); yyclearin;}
1181 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1184 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1185 | PARSEOP_FINDSETLEFTBIT '('
1186 error ')' {$$ = AslDoError(); yyclearin;}
1190 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1193 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1194 | PARSEOP_FINDSETRIGHTBIT '('
1195 error ')' {$$ = AslDoError(); yyclearin;}
1199 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1202 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1203 | PARSEOP_FROMBCD '('
1204 error ')' {$$ = AslDoError(); yyclearin;}
1208 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1210 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1211 | PARSEOP_INCREMENT '('
1212 error ')' {$$ = AslDoError(); yyclearin;}
1216 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1220 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1222 error ')' {$$ = AslDoError(); yyclearin;}
1226 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1229 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1231 error ')' {$$ = AslDoError(); yyclearin;}
1235 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1238 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1239 | PARSEOP_LEQUAL '('
1240 error ')' {$$ = AslDoError(); yyclearin;}
1244 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1247 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1248 | PARSEOP_LGREATER '('
1249 error ')' {$$ = AslDoError(); yyclearin;}
1253 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1256 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1257 | PARSEOP_LGREATEREQUAL '('
1258 error ')' {$$ = AslDoError(); yyclearin;}
1262 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1265 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1267 error ')' {$$ = AslDoError(); yyclearin;}
1271 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1274 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1275 | PARSEOP_LLESSEQUAL '('
1276 error ')' {$$ = AslDoError(); yyclearin;}
1280 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1282 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1284 error ')' {$$ = AslDoError(); yyclearin;}
1288 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1291 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1292 | PARSEOP_LNOTEQUAL '('
1293 error ')' {$$ = AslDoError(); yyclearin;}
1297 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1304 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1305 | PARSEOP_LOADTABLE '('
1306 error ')' {$$ = AslDoError(); yyclearin;}
1310 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1313 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1315 error ')' {$$ = AslDoError(); yyclearin;}
1319 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1326 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1328 error ')' {$$ = AslDoError(); yyclearin;}
1332 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1337 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1339 error ')' {$$ = AslDoError(); yyclearin;}
1343 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1347 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1349 error ')' {$$ = AslDoError(); yyclearin;}
1353 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1357 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1358 | PARSEOP_MULTIPLY '('
1359 error ')' {$$ = AslDoError(); yyclearin;}
1363 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1367 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1369 error ')' {$$ = AslDoError(); yyclearin;}
1373 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1377 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1379 error ')' {$$ = AslDoError(); yyclearin;}
1383 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1386 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1388 error ')' {$$ = AslDoError(); yyclearin;}
1392 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1394 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1395 | PARSEOP_OBJECTTYPE '('
1396 error ')' {$$ = AslDoError(); yyclearin;}
1400 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1404 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1406 error ')' {$$ = AslDoError(); yyclearin;}
1410 * In RefOf, the node isn't really a target, but we can't keep track of it after
1411 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1414 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1416 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1418 error ')' {$$ = AslDoError(); yyclearin;}
1422 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1426 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1427 | PARSEOP_SHIFTLEFT '('
1428 error ')' {$$ = AslDoError(); yyclearin;}
1432 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1436 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1437 | PARSEOP_SHIFTRIGHT '('
1438 error ')' {$$ = AslDoError(); yyclearin;}
1442 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1444 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1445 | PARSEOP_SIZEOF '('
1446 error ')' {$$ = AslDoError(); yyclearin;}
1450 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1453 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1455 error ')' {$$ = AslDoError(); yyclearin;}
1459 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1463 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1464 | PARSEOP_SUBTRACT '('
1465 error ')' {$$ = AslDoError(); yyclearin;}
1469 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1470 ')' {$$ = TrLinkChildren ($<n>3,0);}
1471 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1473 error ')' {$$ = AslDoError(); yyclearin;}
1477 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1480 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1482 error ')' {$$ = AslDoError(); yyclearin;}
1486 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1489 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1490 | PARSEOP_TOBUFFER '('
1491 error ')' {$$ = AslDoError(); yyclearin;}
1495 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1498 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1499 | PARSEOP_TODECIMALSTRING '('
1500 error ')' {$$ = AslDoError(); yyclearin;}
1504 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1507 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1508 | PARSEOP_TOHEXSTRING '('
1509 error ')' {$$ = AslDoError(); yyclearin;}
1513 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1516 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1517 | PARSEOP_TOINTEGER '('
1518 error ')' {$$ = AslDoError(); yyclearin;}
1522 : PARSEOP_PLD_REVISION {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
1523 | PARSEOP_PLD_IGNORECOLOR {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
1524 | PARSEOP_PLD_RED {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
1525 | PARSEOP_PLD_GREEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
1526 | PARSEOP_PLD_BLUE {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
1527 | PARSEOP_PLD_WIDTH {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
1528 | PARSEOP_PLD_HEIGHT {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
1529 | PARSEOP_PLD_USERVISIBLE {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
1530 | PARSEOP_PLD_DOCK {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
1531 | PARSEOP_PLD_LID {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
1532 | PARSEOP_PLD_PANEL {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
1533 | PARSEOP_PLD_VERTICALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
1534 | PARSEOP_PLD_HORIZONTALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
1535 | PARSEOP_PLD_SHAPE {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
1536 | PARSEOP_PLD_GROUPORIENTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
1537 | PARSEOP_PLD_GROUPTOKEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
1538 | PARSEOP_PLD_GROUPPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
1539 | PARSEOP_PLD_BAY {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
1540 | PARSEOP_PLD_EJECTABLE {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
1541 | PARSEOP_PLD_EJECTREQUIRED {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
1542 | PARSEOP_PLD_CABINETNUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
1543 | PARSEOP_PLD_CARDCAGENUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
1544 | PARSEOP_PLD_REFERENCE {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
1545 | PARSEOP_PLD_ROTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
1546 | PARSEOP_PLD_ORDER {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
1547 | PARSEOP_PLD_RESERVED {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
1548 | PARSEOP_PLD_VERTICALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
1549 | PARSEOP_PLD_HORIZONTALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
1555 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);}
1557 PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);}
1558 | PldKeywordList ',' /* Allows a trailing comma at list end */
1559 | PldKeywordList ','
1561 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1562 | PldKeywordList ','
1564 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1568 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
1570 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1572 error ')' {$$ = AslDoError(); yyclearin;}
1577 | TermArg {$$ = $1;}
1579 TermArg {$$ = TrLinkPeerNode ($1, $3);}
1583 : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
1586 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1587 | PARSEOP_PRINTF '('
1588 error ')' {$$ = AslDoError(); yyclearin;}
1592 : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
1596 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1597 | PARSEOP_FPRINTF '('
1598 error ')' {$$ = AslDoError(); yyclearin;}
1602 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1606 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1607 | PARSEOP_TOSTRING '('
1608 error ')' {$$ = AslDoError(); yyclearin;}
1612 : PARSEOP_TOUUID '('
1613 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1614 | PARSEOP_TOUUID '('
1615 error ')' {$$ = AslDoError(); yyclearin;}
1619 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1622 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1624 error ')' {$$ = AslDoError(); yyclearin;}
1628 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1632 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1634 error ')' {$$ = AslDoError(); yyclearin;}
1638 /******* Keywords *************************************************************/
1642 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
1643 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
1644 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
1645 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
1646 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
1647 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
1648 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
1649 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
1651 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1652 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
1654 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1655 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
1657 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1661 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
1662 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
1663 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
1664 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
1665 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
1666 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
1669 AddressingModeKeyword
1670 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
1671 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
1675 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
1676 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
1677 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
1678 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
1682 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
1683 | RegionSpaceKeyword {}
1687 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
1688 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
1689 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
1690 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
1691 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
1695 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
1696 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
1699 ClockPolarityKeyword
1700 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
1701 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
1705 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
1706 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
1709 DevicePolarityKeyword
1710 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
1711 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
1715 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
1716 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
1717 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
1718 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
1722 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
1723 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
1727 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
1728 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
1729 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
1733 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
1734 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
1735 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
1738 InterruptTypeKeyword
1739 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
1740 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
1744 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
1745 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
1748 IoRestrictionKeyword
1749 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
1750 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
1751 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
1752 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
1756 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
1757 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
1761 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
1762 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
1763 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
1764 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
1765 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
1766 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
1770 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
1771 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
1775 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
1776 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
1777 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
1778 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
1782 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
1783 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
1787 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
1788 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
1789 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
1790 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
1791 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
1792 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
1793 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
1794 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
1795 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
1796 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
1797 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
1798 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
1799 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
1800 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
1801 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
1802 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
1806 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
1807 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
1808 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
1809 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
1810 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
1814 : PinConfigKeyword {$$ = $1;}
1815 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1819 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
1820 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
1821 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
1822 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
1826 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
1827 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
1828 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
1832 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
1833 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
1834 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
1835 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
1836 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
1837 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
1838 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
1839 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
1840 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
1841 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
1842 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
1843 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
1847 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1848 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
1851 SerializeRuleKeyword
1852 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
1853 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
1857 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
1858 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
1859 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
1860 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
1864 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
1865 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
1869 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
1870 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
1871 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
1872 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
1876 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
1877 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
1881 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
1882 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
1886 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
1887 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
1888 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
1892 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
1893 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
1897 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
1898 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
1899 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
1900 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
1901 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
1902 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
1906 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
1907 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
1908 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
1912 /******* Miscellaneous Types **************************************************/
1922 /* For ObjectType: SuperName except for MethodInvocationTerm */
1933 /* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
1937 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
1938 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
1939 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
1940 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
1941 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
1942 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
1943 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
1947 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1948 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1949 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1950 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1951 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1952 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1953 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1954 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1958 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
1963 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
1967 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
1971 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
1975 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
1979 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
1983 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
1988 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
1992 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
1993 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
1994 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
1995 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
1996 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
1997 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
1998 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2002 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
2003 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
2004 * to simple integers. It is an error if these types of expressions cannot be
2005 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
2006 * Note: The required byte length of the constant is passed through to the
2007 * constant folding code in the node AmlLength field.
2010 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
2011 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
2012 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2017 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
2018 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
2019 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2024 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
2025 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
2026 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2031 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
2032 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
2033 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2037 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2040 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2041 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2042 | ',' TermArg {$$ = $2;}
2046 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2049 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2050 | PARSEOP_BUFFER '('
2051 error ')' {$$ = AslDoError(); yyclearin;}
2062 | ByteList ',' /* Allows a trailing comma at list end */
2064 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2068 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2071 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2072 | PARSEOP_DATABUFFER '('
2073 error ')' {$$ = AslDoError(); yyclearin;}
2079 | DWordList ',' /* Allows a trailing comma at list end */
2081 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2085 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2086 VarPackageLengthTerm
2088 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2089 | PARSEOP_PACKAGE '('
2090 error ')' {$$ = AslDoError(); yyclearin;}
2096 | PackageList ',' /* Allows a trailing comma at list end */
2098 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2106 VarPackageLengthTerm
2107 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2108 | TermArg {$$ = $1;}
2112 /******* Macros ***********************************************/
2116 : PARSEOP_EISAID '('
2117 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2118 | PARSEOP_EISAID '('
2119 error ')' {$$ = AslDoError(); yyclearin;}
2123 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2125 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2126 | PARSEOP_UNICODE '('
2127 error ')' {$$ = AslDoError(); yyclearin;}
2131 /******* Resources and Memory ***********************************************/
2135 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2136 * Also, insert the EndTag at the end of the template.
2138 ResourceTemplateTerm
2139 : PARSEOP_RESOURCETEMPLATE '(' ')'
2141 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2142 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2143 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2145 TrCreateLeafNode (PARSEOP_ENDTAG));}
2151 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2157 | DWordMemoryTerm {}
2159 | EndDependentFnTerm {}
2161 | ExtendedMemoryTerm {}
2162 | ExtendedSpaceTerm {}
2167 | I2cSerialBusTerm {}
2173 | Memory32FixedTerm {}
2176 | QWordMemoryTerm {}
2179 | SpiSerialBusTerm {}
2180 | StartDependentFnNoPriTerm {}
2181 | StartDependentFnTerm {}
2182 | UartSerialBusTerm {}
2184 | VendorShortTerm {}
2185 | WordBusNumberTerm {}
2191 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2193 OptionalBusMasterKeyword
2195 OptionalNameString_Last
2197 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2199 error ')' {$$ = AslDoError(); yyclearin;}
2203 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2204 OptionalResourceType_First
2214 OptionalByteConstExpr
2218 OptionalTranslationType_Last
2219 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2220 | PARSEOP_DWORDIO '('
2221 error ')' {$$ = AslDoError(); yyclearin;}
2225 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2226 OptionalResourceType_First
2231 ',' OptionalReadWriteKeyword
2237 OptionalByteConstExpr
2240 OptionalAddressRange
2242 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2243 | PARSEOP_DWORDMEMORY '('
2244 error ')' {$$ = AslDoError(); yyclearin;}
2248 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2249 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2250 OptionalResourceType
2260 OptionalByteConstExpr
2262 OptionalNameString_Last
2263 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2264 | PARSEOP_DWORDSPACE '('
2265 error ')' {$$ = AslDoError(); yyclearin;}
2270 : PARSEOP_ENDDEPENDENTFN '('
2271 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2272 | PARSEOP_ENDDEPENDENTFN '('
2273 error ')' {$$ = AslDoError(); yyclearin;}
2277 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2278 OptionalResourceType_First
2288 OptionalQWordConstExpr
2291 OptionalTranslationType_Last
2292 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2293 | PARSEOP_EXTENDEDIO '('
2294 error ')' {$$ = AslDoError(); yyclearin;}
2298 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2299 OptionalResourceType_First
2304 ',' OptionalReadWriteKeyword
2310 OptionalQWordConstExpr
2312 OptionalAddressRange
2314 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2315 | PARSEOP_EXTENDEDMEMORY '('
2316 error ')' {$$ = AslDoError(); yyclearin;}
2320 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2321 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2322 OptionalResourceType
2332 OptionalQWordConstExpr
2333 OptionalNameString_Last
2334 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2335 | PARSEOP_EXTENDEDSPACE '('
2336 error ')' {$$ = AslDoError(); yyclearin;}
2340 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2341 WordConstExpr /* 04: DMA RequestLines */
2342 ',' WordConstExpr /* 06: DMA Channels */
2343 OptionalXferSize /* 07: DMA TransferSize */
2344 OptionalNameString /* 08: DescriptorName */
2345 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2346 | PARSEOP_FIXEDDMA '('
2347 error ')' {$$ = AslDoError(); yyclearin;}
2351 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2354 OptionalNameString_Last
2355 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2356 | PARSEOP_FIXEDIO '('
2357 error ')' {$$ = AslDoError(); yyclearin;}
2361 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2362 InterruptTypeKeyword /* 04: InterruptType */
2363 ',' InterruptLevel /* 06: InterruptLevel */
2364 OptionalShareType /* 07: SharedType */
2365 ',' PinConfigByte /* 09: PinConfig */
2366 OptionalWordConstExpr /* 10: DebounceTimeout */
2367 ',' StringData /* 12: ResourceSource */
2368 OptionalByteConstExpr /* 13: ResourceSourceIndex */
2369 OptionalResourceType /* 14: ResourceType */
2370 OptionalNameString /* 15: DescriptorName */
2371 OptionalBuffer_Last /* 16: VendorData */
2373 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2374 | PARSEOP_GPIO_INT '('
2375 error ')' {$$ = AslDoError(); yyclearin;}
2379 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2380 OptionalShareType_First /* 04: SharedType */
2381 ',' PinConfigByte /* 06: PinConfig */
2382 OptionalWordConstExpr /* 07: DebounceTimeout */
2383 OptionalWordConstExpr /* 08: DriveStrength */
2384 OptionalIoRestriction /* 09: IoRestriction */
2385 ',' StringData /* 11: ResourceSource */
2386 OptionalByteConstExpr /* 12: ResourceSourceIndex */
2387 OptionalResourceType /* 13: ResourceType */
2388 OptionalNameString /* 14: DescriptorName */
2389 OptionalBuffer_Last /* 15: VendorData */
2391 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2392 | PARSEOP_GPIO_IO '('
2393 error ')' {$$ = AslDoError(); yyclearin;}
2397 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2398 WordConstExpr /* 04: SlaveAddress */
2399 OptionalSlaveMode /* 05: SlaveMode */
2400 ',' DWordConstExpr /* 07: ConnectionSpeed */
2401 OptionalAddressingMode /* 08: AddressingMode */
2402 ',' StringData /* 10: ResourceSource */
2403 OptionalByteConstExpr /* 11: ResourceSourceIndex */
2404 OptionalResourceType /* 12: ResourceType */
2405 OptionalNameString /* 13: DescriptorName */
2406 OptionalBuffer_Last /* 14: VendorData */
2407 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2408 | PARSEOP_I2C_SERIALBUS '('
2409 error ')' {$$ = AslDoError(); yyclearin;}
2413 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2414 OptionalResourceType_First
2415 ',' InterruptTypeKeyword
2418 OptionalByteConstExpr
2420 OptionalNameString_Last
2422 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2423 | PARSEOP_INTERRUPT '('
2424 error ')' {$$ = AslDoError(); yyclearin;}
2428 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2434 OptionalNameString_Last
2435 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2437 error ')' {$$ = AslDoError(); yyclearin;}
2441 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2442 OptionalNameString_First
2444 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2445 | PARSEOP_IRQNOFLAGS '('
2446 error ')' {$$ = AslDoError(); yyclearin;}
2450 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2451 InterruptTypeKeyword
2454 OptionalNameString_Last
2456 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2458 error ')' {$$ = AslDoError(); yyclearin;}
2462 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2463 OptionalReadWriteKeyword
2468 OptionalNameString_Last
2469 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2470 | PARSEOP_MEMORY24 '('
2471 error ')' {$$ = AslDoError(); yyclearin;}
2475 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2476 OptionalReadWriteKeyword
2479 OptionalNameString_Last
2480 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2481 | PARSEOP_MEMORY32FIXED '('
2482 error ')' {$$ = AslDoError(); yyclearin;}
2486 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2487 OptionalReadWriteKeyword
2492 OptionalNameString_Last
2493 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2494 | PARSEOP_MEMORY32 '('
2495 error ')' {$$ = AslDoError(); yyclearin;}
2499 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2500 OptionalResourceType_First
2510 OptionalByteConstExpr
2514 OptionalTranslationType_Last
2515 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2516 | PARSEOP_QWORDIO '('
2517 error ')' {$$ = AslDoError(); yyclearin;}
2521 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2522 OptionalResourceType_First
2527 ',' OptionalReadWriteKeyword
2533 OptionalByteConstExpr
2536 OptionalAddressRange
2538 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2539 | PARSEOP_QWORDMEMORY '('
2540 error ')' {$$ = AslDoError(); yyclearin;}
2544 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2545 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2546 OptionalResourceType
2556 OptionalByteConstExpr
2558 OptionalNameString_Last
2559 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2560 | PARSEOP_QWORDSPACE '('
2561 error ')' {$$ = AslDoError(); yyclearin;}
2565 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2571 OptionalNameString_Last
2572 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
2573 | PARSEOP_REGISTER '('
2574 error ')' {$$ = AslDoError(); yyclearin;}
2578 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
2579 WordConstExpr /* 04: DeviceSelection */
2580 OptionalDevicePolarity /* 05: DevicePolarity */
2581 OptionalWireMode /* 06: WireMode */
2582 ',' ByteConstExpr /* 08: DataBitLength */
2583 OptionalSlaveMode /* 09: SlaveMode */
2584 ',' DWordConstExpr /* 11: ConnectionSpeed */
2585 ',' ClockPolarityKeyword /* 13: ClockPolarity */
2586 ',' ClockPhaseKeyword /* 15: ClockPhase */
2587 ',' StringData /* 17: ResourceSource */
2588 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2589 OptionalResourceType /* 19: ResourceType */
2590 OptionalNameString /* 20: DescriptorName */
2591 OptionalBuffer_Last /* 21: VendorData */
2592 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
2593 | PARSEOP_SPI_SERIALBUS '('
2594 error ')' {$$ = AslDoError(); yyclearin;}
2597 StartDependentFnNoPriTerm
2598 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2600 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
2601 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2602 error ')' {$$ = AslDoError(); yyclearin;}
2605 StartDependentFnTerm
2606 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2610 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2611 | PARSEOP_STARTDEPENDENTFN '('
2612 error ')' {$$ = AslDoError(); yyclearin;}
2616 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
2617 DWordConstExpr /* 04: ConnectionSpeed */
2618 OptionalBitsPerByte /* 05: BitsPerByte */
2619 OptionalStopBits /* 06: StopBits */
2620 ',' ByteConstExpr /* 08: LinesInUse */
2621 OptionalEndian /* 09: Endianess */
2622 OptionalParityType /* 10: Parity */
2623 OptionalFlowControl /* 11: FlowControl */
2624 ',' WordConstExpr /* 13: Rx BufferSize */
2625 ',' WordConstExpr /* 15: Tx BufferSize */
2626 ',' StringData /* 17: ResourceSource */
2627 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2628 OptionalResourceType /* 19: ResourceType */
2629 OptionalNameString /* 20: DescriptorName */
2630 OptionalBuffer_Last /* 21: VendorData */
2631 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
2632 | PARSEOP_UART_SERIALBUS '('
2633 error ')' {$$ = AslDoError(); yyclearin;}
2637 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2638 OptionalNameString_First
2640 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2641 | PARSEOP_VENDORLONG '('
2642 error ')' {$$ = AslDoError(); yyclearin;}
2646 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2647 OptionalNameString_First
2649 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2650 | PARSEOP_VENDORSHORT '('
2651 error ')' {$$ = AslDoError(); yyclearin;}
2655 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2656 OptionalResourceType_First
2665 OptionalByteConstExpr
2667 OptionalNameString_Last
2668 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2669 | PARSEOP_WORDBUSNUMBER '('
2670 error ')' {$$ = AslDoError(); yyclearin;}
2674 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2675 OptionalResourceType_First
2685 OptionalByteConstExpr
2689 OptionalTranslationType_Last
2690 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2691 | PARSEOP_WORDIO '('
2692 error ')' {$$ = AslDoError(); yyclearin;}
2696 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2697 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2698 OptionalResourceType
2708 OptionalByteConstExpr
2710 OptionalNameString_Last
2711 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2712 | PARSEOP_WORDSPACE '('
2713 error ')' {$$ = AslDoError(); yyclearin;}
2717 /******* Object References ***********************************************/
2719 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
2723 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2724 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
2725 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
2726 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
2730 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2734 /******* Helper rules ****************************************************/
2737 AmlPackageLengthTerm
2738 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2742 : ',' NameString {$$ = $2;}
2743 | ',' error {$$ = AslDoError (); yyclearin;}
2747 : ',' TermArg {$$ = $2;}
2748 | ',' error {$$ = AslDoError (); yyclearin;}
2751 OptionalBusMasterKeyword
2752 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2753 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2754 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2757 OptionalAccessAttribTerm
2760 | ',' ByteConstExpr {$$ = $2;}
2761 | ',' AccessAttribKeyword {$$ = $2;}
2765 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2766 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2767 | ',' ByteConstExpr {$$ = $2;}
2770 OptionalAddressingMode
2772 | ',' AddressingModeKeyword {$$ = $2;}
2775 OptionalAddressRange
2778 | ',' AddressKeyword {$$ = $2;}
2783 | ',' BitsPerByteKeyword {$$ = $2;}
2789 | ',' DataBufferTerm {$$ = $2;}
2792 OptionalByteConstExpr
2795 | ',' ByteConstExpr {$$ = $2;}
2800 | ',' DecodeKeyword {$$ = $2;}
2803 OptionalDevicePolarity
2805 | ',' DevicePolarityKeyword {$$ = $2;}
2808 OptionalDWordConstExpr
2811 | ',' DWordConstExpr {$$ = $2;}
2816 | ',' EndianKeyword {$$ = $2;}
2821 | ',' FlowControlKeyword {$$ = $2;}
2824 OptionalIoRestriction
2826 | ',' IoRestrictionKeyword {$$ = $2;}
2830 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2831 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2832 | ',' TermArg {$$ = $2;}
2837 | ',' MaxKeyword {$$ = $2;}
2842 | ',' MemTypeKeyword {$$ = $2;}
2847 | ',' MinKeyword {$$ = $2;}
2853 | ',' NameString {$$ = $2;}
2856 OptionalNameString_Last
2859 | ',' NameString {$$ = $2;}
2862 OptionalNameString_First
2863 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
2864 | NameString {$$ = $1;}
2867 OptionalObjectTypeKeyword
2868 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2869 | ',' ObjectTypeKeyword {$$ = $2;}
2874 | ',' ParityTypeKeyword {$$ = $2;}
2877 OptionalQWordConstExpr
2880 | ',' QWordConstExpr {$$ = $2;}
2885 | ',' RangeTypeKeyword {$$ = $2;}
2888 OptionalReadWriteKeyword
2889 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2890 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2891 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2895 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2896 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2897 | ',' TermArg {$$ = $2;}
2900 OptionalResourceType_First
2901 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2902 | ResourceTypeKeyword {$$ = $1;}
2905 OptionalResourceType
2906 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2907 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2908 | ',' ResourceTypeKeyword {$$ = $2;}
2912 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
2913 | TermArg {$$ = $1;}
2916 OptionalSerializeRuleKeyword
2919 | ',' SerializeRuleKeyword {$$ = $2;}
2924 | ',' SlaveModeKeyword {$$ = $2;}
2930 | ',' ShareTypeKeyword {$$ = $2;}
2933 OptionalShareType_First
2935 | ShareTypeKeyword {$$ = $1;}
2940 | ',' StopBitsKeyword {$$ = $2;}
2946 | ',' StringData {$$ = $2;}
2951 | TermArg {$$ = $1;}
2957 | ',' TypeKeyword {$$ = $2;}
2963 | ',' TypeKeyword {$$ = $2;}
2966 OptionalTranslationType_Last
2969 | ',' TranslationKeyword {$$ = $2;}
2974 | ',' WireModeKeyword {$$ = $2;}
2979 | WordConst {$$ = $1;}
2982 OptionalWordConstExpr
2984 | ',' WordConstExpr {$$ = $2;}
2988 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2989 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2990 | ',' XferSizeKeyword {$$ = $2;}