2 /******************************************************************************
4 * Module Name: aslrules.y - Bison/Yacc production rules
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2014, 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);}
95 /* ACPI 3.0 -- allow semicolons between terms */
99 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
100 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
101 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
102 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
109 | Type2IntegerOpcode {}
110 | Type2StringOpcode {}
111 | Type2BufferOpcode {}
112 | Type2BufferOrStringOpcode {}
113 | error {$$ = AslDoError(); yyclearin;}
123 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
124 | error {$$ = AslDoError(); yyclearin;}
128 : CompilerDirective {}
130 | NameSpaceModifier {}
141 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
142 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
143 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
152 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
153 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
159 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
165 | CreateBitFieldTerm {}
166 | CreateByteFieldTerm {}
167 | CreateDWordFieldTerm {}
169 | CreateQWordFieldTerm {}
170 | CreateWordFieldTerm {}
192 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
193 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
199 | ArgList ',' /* Allows a trailing comma at list end */
201 TermArg {$$ = TrLinkPeerNode ($1,$3);}
205 Removed from TermArg due to reduce/reduce conflicts
206 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
207 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
208 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
209 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
214 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
215 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
216 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
217 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
218 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
222 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
223 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
224 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
228 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
237 /* Rules for specifying the type of one method argument or return value */
241 | ObjectTypeKeyword {$$ = $1;}
242 | ParameterTypePackage ','
243 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
246 ParameterTypePackageList
248 | ObjectTypeKeyword {$$ = $1;}
249 | '{' ParameterTypePackage '}' {$$ = $2;}
252 OptionalParameterTypePackage
253 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
254 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
257 /* Rules for specifying the types for method arguments */
259 ParameterTypesPackage
260 : ParameterTypePackageList {$$ = $1;}
261 | ParameterTypesPackage ','
262 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
265 ParameterTypesPackageList
267 | ObjectTypeKeyword {$$ = $1;}
268 | '{' ParameterTypesPackage '}' {$$ = $2;}
271 OptionalParameterTypesPackage
272 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
273 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
317 Type2IntegerOpcode /* "Type3" opcodes */
322 | FindSetLeftBitTerm {}
323 | FindSetRightBitTerm {}
330 | LGreaterEqualTerm {}
352 Type2StringOpcode /* "Type4" Opcodes */
353 : ToDecimalStringTerm {}
358 Type2BufferOpcode /* "Type5" Opcodes */
363 Type2BufferOrStringOpcode
369 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
379 | ToDecimalStringTerm {}
388 : ResourceTemplateTerm {}
401 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
402 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
404 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
408 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
412 : PARSEOP_EXTERNAL '('
414 OptionalObjectTypeKeyword
415 OptionalParameterTypePackage
416 OptionalParameterTypesPackage
417 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
418 | PARSEOP_EXTERNAL '('
419 error ')' {$$ = AslDoError(); yyclearin;}
423 /******* Named Objects *******************************************************/
427 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
431 ',' AccessTypeKeyword
433 ',' UpdateRuleKeyword
435 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
436 | PARSEOP_BANKFIELD '('
437 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
443 | FieldUnitList ',' /* Allows a trailing comma at list end */
445 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
456 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
458 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
464 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
466 error ')' {$$ = AslDoError(); yyclearin;}
470 : PARSEOP_ACCESSAS '('
472 OptionalAccessAttribTerm
473 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
474 | PARSEOP_ACCESSAS '('
475 error ')' {$$ = AslDoError(); yyclearin;}
479 : PARSEOP_CONNECTION '('
481 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
482 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
484 ')' {$$ = TrLinkChildren ($<n>3, 1,
485 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
486 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
487 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
489 | PARSEOP_CONNECTION '('
490 error ')' {$$ = AslDoError(); yyclearin;}
494 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
498 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
499 | PARSEOP_CREATEBITFIELD '('
500 error ')' {$$ = AslDoError(); yyclearin;}
504 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
508 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
509 | PARSEOP_CREATEBYTEFIELD '('
510 error ')' {$$ = AslDoError(); yyclearin;}
514 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
518 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
519 | PARSEOP_CREATEDWORDFIELD '('
520 error ')' {$$ = AslDoError(); yyclearin;}
524 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
529 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
530 | PARSEOP_CREATEFIELD '('
531 error ')' {$$ = AslDoError(); yyclearin;}
535 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
539 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
540 | PARSEOP_CREATEQWORDFIELD '('
541 error ')' {$$ = AslDoError(); yyclearin;}
545 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
549 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
550 | PARSEOP_CREATEWORDFIELD '('
551 error ')' {$$ = AslDoError(); yyclearin;}
555 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
560 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
561 | PARSEOP_DATATABLEREGION '('
562 error ')' {$$ = AslDoError(); yyclearin;}
566 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
569 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
571 error ')' {$$ = AslDoError(); yyclearin;}
575 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
577 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
579 error ')' {$$ = AslDoError(); yyclearin;}
583 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
585 ',' AccessTypeKeyword
587 ',' UpdateRuleKeyword
589 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
591 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
595 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
597 OptionalParameterTypePackage
598 OptionalParameterTypesPackage
600 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
601 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
602 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
603 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
604 | PARSEOP_FUNCTION '('
605 error ')' {$$ = AslDoError(); yyclearin;}
609 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
612 ',' AccessTypeKeyword
614 ',' UpdateRuleKeyword
616 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
617 | PARSEOP_INDEXFIELD '('
618 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
622 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
624 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
625 OptionalSerializeRuleKeyword
626 OptionalByteConstExpr
627 OptionalParameterTypePackage
628 OptionalParameterTypesPackage
630 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
632 error ')' {$$ = AslDoError(); yyclearin;}
636 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
639 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
641 error ')' {$$ = AslDoError(); yyclearin;}
645 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
647 ',' OpRegionSpaceIdTerm
650 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
651 | PARSEOP_OPERATIONREGION '('
652 error ')' {$$ = AslDoError(); yyclearin;}
656 : RegionSpaceKeyword {}
657 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
661 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
666 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
667 | PARSEOP_POWERRESOURCE '('
668 error ')' {$$ = AslDoError(); yyclearin;}
672 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
675 OptionalDWordConstExpr
676 OptionalByteConstExpr
678 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
679 | PARSEOP_PROCESSOR '('
680 error ')' {$$ = AslDoError(); yyclearin;}
684 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
687 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
688 | PARSEOP_THERMALZONE '('
689 error ')' {$$ = AslDoError(); yyclearin;}
693 /******* Namespace modifiers *************************************************/
697 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
700 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
702 error ')' {$$ = AslDoError(); yyclearin;}
706 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
709 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
711 error ')' {$$ = AslDoError(); yyclearin;}
715 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
718 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
720 error ')' {$$ = AslDoError(); yyclearin;}
724 /******* Type 1 opcodes *******************************************************/
728 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
732 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
736 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
740 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
744 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
746 error ')' {$$ = AslDoError(); yyclearin;}
750 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
754 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
757 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
760 error ')' {$$ = AslDoError(); yyclearin;}
765 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
766 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
769 error '}' {$$ = AslDoError(); yyclearin;}
772 error {$$ = AslDoError(); yyclearin;}
774 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
775 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
777 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
778 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
779 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
782 error ')' {$$ = AslDoError(); yyclearin;}
785 error {$$ = AslDoError(); yyclearin;}
789 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
792 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
794 error ')' {$$ = AslDoError(); yyclearin;}
798 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
802 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
805 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
807 error ')' {$$ = AslDoError(); yyclearin;}
811 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
813 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
814 | PARSEOP_RELEASE '('
815 error ')' {$$ = AslDoError(); yyclearin;}
819 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
821 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
823 error ')' {$$ = AslDoError(); yyclearin;}
827 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
829 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
830 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
832 error ')' {$$ = AslDoError(); yyclearin;}
836 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
838 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
840 error ')' {$$ = AslDoError(); yyclearin;}
844 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
846 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
848 error ')' {$$ = AslDoError(); yyclearin;}
852 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
854 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
856 error ')' {$$ = AslDoError(); yyclearin;}
860 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
863 CaseDefaultTermList '}'
864 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
866 error ')' {$$ = AslDoError(); yyclearin;}
870 * Case-Default list; allow only one Default term and unlimited Case terms
877 | CaseDefaultTermList
878 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
879 | CaseDefaultTermList
880 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
882 /* Original - attempts to force zero or one default term within the switch */
889 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
891 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
898 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
903 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
906 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
908 error ')' {$$ = AslDoError(); yyclearin;}
912 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
913 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
914 | PARSEOP_DEFAULT '{'
915 error '}' {$$ = AslDoError(); yyclearin;}
919 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
921 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
923 error ')' {$$ = AslDoError(); yyclearin;}
927 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
930 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
932 error ')' {$$ = AslDoError(); yyclearin;}
936 /******* Type 2 opcodes *******************************************************/
939 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
942 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
943 | PARSEOP_ACQUIRE '('
944 error ')' {$$ = AslDoError(); yyclearin;}
948 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
952 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
954 error ')' {$$ = AslDoError(); yyclearin;}
958 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
962 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
964 error ')' {$$ = AslDoError(); yyclearin;}
968 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
972 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
973 | PARSEOP_CONCATENATE '('
974 error ')' {$$ = AslDoError(); yyclearin;}
978 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
982 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
983 | PARSEOP_CONCATENATERESTEMPLATE '('
984 error ')' {$$ = AslDoError(); yyclearin;}
988 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
991 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
992 | PARSEOP_CONDREFOF '('
993 error ')' {$$ = AslDoError(); yyclearin;}
997 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1000 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1001 | PARSEOP_COPYOBJECT '('
1002 error ')' {$$ = AslDoError(); yyclearin;}
1006 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1008 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1009 | PARSEOP_DECREMENT '('
1010 error ')' {$$ = AslDoError(); yyclearin;}
1014 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1016 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1017 | PARSEOP_DEREFOF '('
1018 error ')' {$$ = AslDoError(); yyclearin;}
1022 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1027 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1028 | PARSEOP_DIVIDE '('
1029 error ')' {$$ = AslDoError(); yyclearin;}
1033 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1036 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1037 | PARSEOP_FINDSETLEFTBIT '('
1038 error ')' {$$ = AslDoError(); yyclearin;}
1042 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1045 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1046 | PARSEOP_FINDSETRIGHTBIT '('
1047 error ')' {$$ = AslDoError(); yyclearin;}
1051 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1054 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1055 | PARSEOP_FROMBCD '('
1056 error ')' {$$ = AslDoError(); yyclearin;}
1060 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1062 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1063 | PARSEOP_INCREMENT '('
1064 error ')' {$$ = AslDoError(); yyclearin;}
1068 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1072 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1074 error ')' {$$ = AslDoError(); yyclearin;}
1078 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1081 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1083 error ')' {$$ = AslDoError(); yyclearin;}
1087 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1091 | PARSEOP_LEQUAL '('
1092 error ')' {$$ = AslDoError(); yyclearin;}
1096 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1099 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1100 | PARSEOP_LGREATER '('
1101 error ')' {$$ = AslDoError(); yyclearin;}
1105 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1108 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1109 | PARSEOP_LGREATEREQUAL '('
1110 error ')' {$$ = AslDoError(); yyclearin;}
1114 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1117 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1119 error ')' {$$ = AslDoError(); yyclearin;}
1123 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1126 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1127 | PARSEOP_LLESSEQUAL '('
1128 error ')' {$$ = AslDoError(); yyclearin;}
1132 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1134 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1136 error ')' {$$ = AslDoError(); yyclearin;}
1140 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1143 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1144 | PARSEOP_LNOTEQUAL '('
1145 error ')' {$$ = AslDoError(); yyclearin;}
1149 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1156 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1157 | PARSEOP_LOADTABLE '('
1158 error ')' {$$ = AslDoError(); yyclearin;}
1162 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1165 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1167 error ')' {$$ = AslDoError(); yyclearin;}
1171 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1178 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1180 error ')' {$$ = AslDoError(); yyclearin;}
1184 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1189 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1191 error ')' {$$ = AslDoError(); yyclearin;}
1195 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1199 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1201 error ')' {$$ = AslDoError(); yyclearin;}
1205 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1209 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1210 | PARSEOP_MULTIPLY '('
1211 error ')' {$$ = AslDoError(); yyclearin;}
1215 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1219 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1221 error ')' {$$ = AslDoError(); yyclearin;}
1225 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1229 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1231 error ')' {$$ = AslDoError(); yyclearin;}
1235 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1238 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1240 error ')' {$$ = AslDoError(); yyclearin;}
1244 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1246 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1247 | PARSEOP_OBJECTTYPE '('
1248 error ')' {$$ = AslDoError(); yyclearin;}
1252 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1256 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1258 error ')' {$$ = AslDoError(); yyclearin;}
1262 * In RefOf, the node isn't really a target, but we can't keep track of it after
1263 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1266 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1268 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1270 error ')' {$$ = AslDoError(); yyclearin;}
1274 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1278 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1279 | PARSEOP_SHIFTLEFT '('
1280 error ')' {$$ = AslDoError(); yyclearin;}
1284 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1288 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1289 | PARSEOP_SHIFTRIGHT '('
1290 error ')' {$$ = AslDoError(); yyclearin;}
1294 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1296 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1297 | PARSEOP_SIZEOF '('
1298 error ')' {$$ = AslDoError(); yyclearin;}
1302 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1305 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1307 error ')' {$$ = AslDoError(); yyclearin;}
1311 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1315 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1316 | PARSEOP_SUBTRACT '('
1317 error ')' {$$ = AslDoError(); yyclearin;}
1321 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1322 ')' {$$ = TrLinkChildren ($<n>3,0);}
1323 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1325 error ')' {$$ = AslDoError(); yyclearin;}
1329 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1332 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1334 error ')' {$$ = AslDoError(); yyclearin;}
1338 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1341 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1342 | PARSEOP_TOBUFFER '('
1343 error ')' {$$ = AslDoError(); yyclearin;}
1347 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1350 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1351 | PARSEOP_TODECIMALSTRING '('
1352 error ')' {$$ = AslDoError(); yyclearin;}
1356 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1359 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1360 | PARSEOP_TOHEXSTRING '('
1361 error ')' {$$ = AslDoError(); yyclearin;}
1365 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1368 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1369 | PARSEOP_TOINTEGER '('
1370 error ')' {$$ = AslDoError(); yyclearin;}
1374 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1378 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1379 | PARSEOP_TOSTRING '('
1380 error ')' {$$ = AslDoError(); yyclearin;}
1384 : PARSEOP_TOUUID '('
1385 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1386 | PARSEOP_TOUUID '('
1387 error ')' {$$ = AslDoError(); yyclearin;}
1391 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1394 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1396 error ')' {$$ = AslDoError(); yyclearin;}
1400 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1404 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1406 error ')' {$$ = AslDoError(); yyclearin;}
1410 /******* Keywords *************************************************************/
1414 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
1415 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
1416 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
1417 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
1418 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
1419 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
1420 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
1421 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
1423 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1424 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
1426 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1427 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
1429 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1433 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
1434 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
1435 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
1436 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
1437 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
1438 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
1441 AddressingModeKeyword
1442 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
1443 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
1447 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
1448 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
1449 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
1450 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
1454 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
1455 | RegionSpaceKeyword {}
1459 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
1460 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
1461 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
1462 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
1463 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
1467 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
1468 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
1471 ClockPolarityKeyword
1472 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
1473 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
1477 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
1478 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
1481 DevicePolarityKeyword
1482 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
1483 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
1487 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
1488 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
1489 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
1490 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
1494 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
1495 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
1499 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
1500 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
1501 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
1505 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
1506 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
1507 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
1510 InterruptTypeKeyword
1511 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
1512 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
1516 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
1517 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
1520 IoRestrictionKeyword
1521 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
1522 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
1523 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
1524 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
1528 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
1529 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
1533 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
1534 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
1535 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
1536 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
1537 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
1538 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
1542 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
1543 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
1547 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
1548 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
1549 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
1550 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
1554 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
1555 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
1559 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
1560 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
1561 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
1562 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
1563 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
1564 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
1565 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
1566 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
1567 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
1568 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
1569 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
1570 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
1571 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
1572 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
1573 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
1574 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
1578 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
1579 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
1580 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
1581 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
1582 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
1586 : PinConfigKeyword {$$ = $1;}
1587 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1591 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
1592 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
1593 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
1594 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
1598 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
1599 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
1600 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
1604 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
1605 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
1606 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
1607 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
1608 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
1609 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
1610 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
1611 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
1612 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
1613 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
1614 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
1615 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
1619 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1620 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
1623 SerializeRuleKeyword
1624 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
1625 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
1629 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
1630 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
1631 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
1632 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
1636 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
1637 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
1641 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
1642 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
1643 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
1644 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
1648 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
1649 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
1653 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
1654 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
1658 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
1659 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
1660 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
1664 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
1665 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
1669 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
1670 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
1671 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
1672 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
1673 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
1674 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
1678 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
1679 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
1680 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
1684 /******* Miscellaneous Types **************************************************/
1694 /* For ObjectType: SuperName except for UserTerm (method invocation) */
1705 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
1709 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
1710 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
1711 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
1712 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
1713 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
1714 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
1715 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
1719 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1720 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1721 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1722 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1723 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1724 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1725 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1726 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1730 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
1735 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
1739 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
1743 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
1747 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
1751 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
1755 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
1760 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
1764 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
1765 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
1766 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
1767 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
1768 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
1769 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
1770 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
1774 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
1775 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
1776 * to simple integers. It is an error if these types of expressions cannot be
1777 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
1778 * Note: The required byte length of the constant is passed through to the
1779 * constant folding code in the node AmlLength field.
1782 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
1783 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
1784 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
1789 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
1790 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
1791 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
1796 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
1797 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
1798 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
1803 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
1804 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
1805 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
1809 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
1812 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
1813 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
1814 | ',' TermArg {$$ = $2;}
1818 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
1821 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1822 | PARSEOP_BUFFER '('
1823 error ')' {$$ = AslDoError(); yyclearin;}
1834 | ByteList ',' /* Allows a trailing comma at list end */
1836 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
1840 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
1843 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1844 | PARSEOP_DATABUFFER '('
1845 error ')' {$$ = AslDoError(); yyclearin;}
1851 | DWordList ',' /* Allows a trailing comma at list end */
1853 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
1857 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
1858 VarPackageLengthTerm
1860 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1861 | PARSEOP_PACKAGE '('
1862 error ')' {$$ = AslDoError(); yyclearin;}
1868 | PackageList ',' /* Allows a trailing comma at list end */
1870 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
1878 VarPackageLengthTerm
1879 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1880 | TermArg {$$ = $1;}
1884 /******* Macros ***********************************************/
1888 : PARSEOP_EISAID '('
1889 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
1890 | PARSEOP_EISAID '('
1891 error ')' {$$ = AslDoError(); yyclearin;}
1895 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
1897 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
1898 | PARSEOP_UNICODE '('
1899 error ')' {$$ = AslDoError(); yyclearin;}
1903 /******* Resources and Memory ***********************************************/
1907 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
1908 * Also, insert the EndTag at the end of the template.
1910 ResourceTemplateTerm
1911 : PARSEOP_RESOURCETEMPLATE '(' ')'
1913 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
1914 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1915 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1917 TrCreateLeafNode (PARSEOP_ENDTAG));}
1923 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
1929 | DWordMemoryTerm {}
1931 | EndDependentFnTerm {}
1933 | ExtendedMemoryTerm {}
1934 | ExtendedSpaceTerm {}
1939 | I2cSerialBusTerm {}
1945 | Memory32FixedTerm {}
1948 | QWordMemoryTerm {}
1951 | SpiSerialBusTerm {}
1952 | StartDependentFnNoPriTerm {}
1953 | StartDependentFnTerm {}
1954 | UartSerialBusTerm {}
1956 | VendorShortTerm {}
1957 | WordBusNumberTerm {}
1963 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
1965 OptionalBusMasterKeyword
1967 OptionalNameString_Last
1969 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
1971 error ')' {$$ = AslDoError(); yyclearin;}
1975 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
1976 OptionalResourceType_First
1986 OptionalByteConstExpr
1990 OptionalTranslationType_Last
1991 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
1992 | PARSEOP_DWORDIO '('
1993 error ')' {$$ = AslDoError(); yyclearin;}
1997 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
1998 OptionalResourceType_First
2003 ',' OptionalReadWriteKeyword
2009 OptionalByteConstExpr
2012 OptionalAddressRange
2014 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2015 | PARSEOP_DWORDMEMORY '('
2016 error ')' {$$ = AslDoError(); yyclearin;}
2020 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2021 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2022 OptionalResourceType
2032 OptionalByteConstExpr
2034 OptionalNameString_Last
2035 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2036 | PARSEOP_DWORDSPACE '('
2037 error ')' {$$ = AslDoError(); yyclearin;}
2042 : PARSEOP_ENDDEPENDENTFN '('
2043 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2044 | PARSEOP_ENDDEPENDENTFN '('
2045 error ')' {$$ = AslDoError(); yyclearin;}
2049 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2050 OptionalResourceType_First
2060 OptionalQWordConstExpr
2063 OptionalTranslationType_Last
2064 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2065 | PARSEOP_EXTENDEDIO '('
2066 error ')' {$$ = AslDoError(); yyclearin;}
2070 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2071 OptionalResourceType_First
2076 ',' OptionalReadWriteKeyword
2082 OptionalQWordConstExpr
2084 OptionalAddressRange
2086 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2087 | PARSEOP_EXTENDEDMEMORY '('
2088 error ')' {$$ = AslDoError(); yyclearin;}
2092 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2093 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2094 OptionalResourceType
2104 OptionalQWordConstExpr
2105 OptionalNameString_Last
2106 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2107 | PARSEOP_EXTENDEDSPACE '('
2108 error ')' {$$ = AslDoError(); yyclearin;}
2112 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2113 WordConstExpr /* 04: DMA RequestLines */
2114 ',' WordConstExpr /* 06: DMA Channels */
2115 OptionalXferSize /* 07: DMA TransferSize */
2116 OptionalNameString /* 08: DescriptorName */
2117 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2118 | PARSEOP_FIXEDDMA '('
2119 error ')' {$$ = AslDoError(); yyclearin;}
2123 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2126 OptionalNameString_Last
2127 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2128 | PARSEOP_FIXEDIO '('
2129 error ')' {$$ = AslDoError(); yyclearin;}
2133 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2134 InterruptTypeKeyword /* 04: InterruptType */
2135 ',' InterruptLevel /* 06: InterruptLevel */
2136 OptionalShareType /* 07: SharedType */
2137 ',' PinConfigByte /* 09: PinConfig */
2138 OptionalWordConstExpr /* 10: DebounceTimeout */
2139 ',' StringData /* 12: ResourceSource */
2140 OptionalByteConstExpr /* 13: ResourceSourceIndex */
2141 OptionalResourceType /* 14: ResourceType */
2142 OptionalNameString /* 15: DescriptorName */
2143 OptionalBuffer_Last /* 16: VendorData */
2145 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2146 | PARSEOP_GPIO_INT '('
2147 error ')' {$$ = AslDoError(); yyclearin;}
2151 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2152 OptionalShareType_First /* 04: SharedType */
2153 ',' PinConfigByte /* 06: PinConfig */
2154 OptionalWordConstExpr /* 07: DebounceTimeout */
2155 OptionalWordConstExpr /* 08: DriveStrength */
2156 OptionalIoRestriction /* 09: IoRestriction */
2157 ',' StringData /* 11: ResourceSource */
2158 OptionalByteConstExpr /* 12: ResourceSourceIndex */
2159 OptionalResourceType /* 13: ResourceType */
2160 OptionalNameString /* 14: DescriptorName */
2161 OptionalBuffer_Last /* 15: VendorData */
2163 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2164 | PARSEOP_GPIO_IO '('
2165 error ')' {$$ = AslDoError(); yyclearin;}
2169 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2170 WordConstExpr /* 04: SlaveAddress */
2171 OptionalSlaveMode /* 05: SlaveMode */
2172 ',' DWordConstExpr /* 07: ConnectionSpeed */
2173 OptionalAddressingMode /* 08: AddressingMode */
2174 ',' StringData /* 10: ResourceSource */
2175 OptionalByteConstExpr /* 11: ResourceSourceIndex */
2176 OptionalResourceType /* 12: ResourceType */
2177 OptionalNameString /* 13: DescriptorName */
2178 OptionalBuffer_Last /* 14: VendorData */
2179 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2180 | PARSEOP_I2C_SERIALBUS '('
2181 error ')' {$$ = AslDoError(); yyclearin;}
2185 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2186 OptionalResourceType_First
2187 ',' InterruptTypeKeyword
2190 OptionalByteConstExpr
2192 OptionalNameString_Last
2194 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2195 | PARSEOP_INTERRUPT '('
2196 error ')' {$$ = AslDoError(); yyclearin;}
2200 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2206 OptionalNameString_Last
2207 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2209 error ')' {$$ = AslDoError(); yyclearin;}
2213 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2214 OptionalNameString_First
2216 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2217 | PARSEOP_IRQNOFLAGS '('
2218 error ')' {$$ = AslDoError(); yyclearin;}
2222 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2223 InterruptTypeKeyword
2226 OptionalNameString_Last
2228 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2230 error ')' {$$ = AslDoError(); yyclearin;}
2234 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2235 OptionalReadWriteKeyword
2240 OptionalNameString_Last
2241 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2242 | PARSEOP_MEMORY24 '('
2243 error ')' {$$ = AslDoError(); yyclearin;}
2247 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2248 OptionalReadWriteKeyword
2251 OptionalNameString_Last
2252 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2253 | PARSEOP_MEMORY32FIXED '('
2254 error ')' {$$ = AslDoError(); yyclearin;}
2258 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2259 OptionalReadWriteKeyword
2264 OptionalNameString_Last
2265 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2266 | PARSEOP_MEMORY32 '('
2267 error ')' {$$ = AslDoError(); yyclearin;}
2271 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2272 OptionalResourceType_First
2282 OptionalByteConstExpr
2286 OptionalTranslationType_Last
2287 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2288 | PARSEOP_QWORDIO '('
2289 error ')' {$$ = AslDoError(); yyclearin;}
2293 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2294 OptionalResourceType_First
2299 ',' OptionalReadWriteKeyword
2305 OptionalByteConstExpr
2308 OptionalAddressRange
2310 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2311 | PARSEOP_QWORDMEMORY '('
2312 error ')' {$$ = AslDoError(); yyclearin;}
2316 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2317 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2318 OptionalResourceType
2328 OptionalByteConstExpr
2330 OptionalNameString_Last
2331 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2332 | PARSEOP_QWORDSPACE '('
2333 error ')' {$$ = AslDoError(); yyclearin;}
2337 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2343 OptionalNameString_Last
2344 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
2345 | PARSEOP_REGISTER '('
2346 error ')' {$$ = AslDoError(); yyclearin;}
2350 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
2351 WordConstExpr /* 04: DeviceSelection */
2352 OptionalDevicePolarity /* 05: DevicePolarity */
2353 OptionalWireMode /* 06: WireMode */
2354 ',' ByteConstExpr /* 08: DataBitLength */
2355 OptionalSlaveMode /* 09: SlaveMode */
2356 ',' DWordConstExpr /* 11: ConnectionSpeed */
2357 ',' ClockPolarityKeyword /* 13: ClockPolarity */
2358 ',' ClockPhaseKeyword /* 15: ClockPhase */
2359 ',' StringData /* 17: ResourceSource */
2360 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2361 OptionalResourceType /* 19: ResourceType */
2362 OptionalNameString /* 20: DescriptorName */
2363 OptionalBuffer_Last /* 21: VendorData */
2364 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
2365 | PARSEOP_SPI_SERIALBUS '('
2366 error ')' {$$ = AslDoError(); yyclearin;}
2369 StartDependentFnNoPriTerm
2370 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2372 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
2373 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2374 error ')' {$$ = AslDoError(); yyclearin;}
2377 StartDependentFnTerm
2378 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2382 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2383 | PARSEOP_STARTDEPENDENTFN '('
2384 error ')' {$$ = AslDoError(); yyclearin;}
2388 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
2389 DWordConstExpr /* 04: ConnectionSpeed */
2390 OptionalBitsPerByte /* 05: BitsPerByte */
2391 OptionalStopBits /* 06: StopBits */
2392 ',' ByteConstExpr /* 08: LinesInUse */
2393 OptionalEndian /* 09: Endianess */
2394 OptionalParityType /* 10: Parity */
2395 OptionalFlowControl /* 11: FlowControl */
2396 ',' WordConstExpr /* 13: Rx BufferSize */
2397 ',' WordConstExpr /* 15: Tx BufferSize */
2398 ',' StringData /* 17: ResourceSource */
2399 OptionalByteConstExpr /* 18: ResourceSourceIndex */
2400 OptionalResourceType /* 19: ResourceType */
2401 OptionalNameString /* 20: DescriptorName */
2402 OptionalBuffer_Last /* 21: VendorData */
2403 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
2404 | PARSEOP_UART_SERIALBUS '('
2405 error ')' {$$ = AslDoError(); yyclearin;}
2409 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2410 OptionalNameString_First
2412 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2413 | PARSEOP_VENDORLONG '('
2414 error ')' {$$ = AslDoError(); yyclearin;}
2418 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2419 OptionalNameString_First
2421 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2422 | PARSEOP_VENDORSHORT '('
2423 error ')' {$$ = AslDoError(); yyclearin;}
2427 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2428 OptionalResourceType_First
2437 OptionalByteConstExpr
2439 OptionalNameString_Last
2440 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2441 | PARSEOP_WORDBUSNUMBER '('
2442 error ')' {$$ = AslDoError(); yyclearin;}
2446 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2447 OptionalResourceType_First
2457 OptionalByteConstExpr
2461 OptionalTranslationType_Last
2462 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2463 | PARSEOP_WORDIO '('
2464 error ')' {$$ = AslDoError(); yyclearin;}
2468 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2469 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2470 OptionalResourceType
2480 OptionalByteConstExpr
2482 OptionalNameString_Last
2483 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2484 | PARSEOP_WORDSPACE '('
2485 error ')' {$$ = AslDoError(); yyclearin;}
2489 /******* Object References ***********************************************/
2491 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
2495 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2496 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
2497 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
2498 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
2502 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2506 /******* Helper rules ****************************************************/
2509 AmlPackageLengthTerm
2510 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2514 : ',' NameString {$$ = $2;}
2515 | ',' error {$$ = AslDoError (); yyclearin;}
2519 : ',' TermArg {$$ = $2;}
2520 | ',' error {$$ = AslDoError (); yyclearin;}
2523 OptionalBusMasterKeyword
2524 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2525 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2526 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2529 OptionalAccessAttribTerm
2532 | ',' ByteConstExpr {$$ = $2;}
2533 | ',' AccessAttribKeyword {$$ = $2;}
2537 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2538 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2539 | ',' ByteConstExpr {$$ = $2;}
2542 OptionalAddressingMode
2544 | ',' AddressingModeKeyword {$$ = $2;}
2547 OptionalAddressRange
2550 | ',' AddressKeyword {$$ = $2;}
2555 | ',' BitsPerByteKeyword {$$ = $2;}
2561 | ',' DataBufferTerm {$$ = $2;}
2564 OptionalByteConstExpr
2567 | ',' ByteConstExpr {$$ = $2;}
2572 | ',' DecodeKeyword {$$ = $2;}
2575 OptionalDevicePolarity
2577 | ',' DevicePolarityKeyword {$$ = $2;}
2580 OptionalDWordConstExpr
2583 | ',' DWordConstExpr {$$ = $2;}
2588 | ',' EndianKeyword {$$ = $2;}
2593 | ',' FlowControlKeyword {$$ = $2;}
2596 OptionalIoRestriction
2598 | ',' IoRestrictionKeyword {$$ = $2;}
2602 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2603 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2604 | ',' TermArg {$$ = $2;}
2609 | ',' MaxKeyword {$$ = $2;}
2614 | ',' MemTypeKeyword {$$ = $2;}
2619 | ',' MinKeyword {$$ = $2;}
2625 | ',' NameString {$$ = $2;}
2628 OptionalNameString_Last
2631 | ',' NameString {$$ = $2;}
2634 OptionalNameString_First
2635 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
2636 | NameString {$$ = $1;}
2639 OptionalObjectTypeKeyword
2640 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2641 | ',' ObjectTypeKeyword {$$ = $2;}
2646 | ',' ParityTypeKeyword {$$ = $2;}
2649 OptionalQWordConstExpr
2652 | ',' QWordConstExpr {$$ = $2;}
2657 | ',' RangeTypeKeyword {$$ = $2;}
2660 OptionalReadWriteKeyword
2661 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2662 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2663 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2667 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2668 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
2669 | ',' TermArg {$$ = $2;}
2672 OptionalResourceType_First
2673 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2674 | ResourceTypeKeyword {$$ = $1;}
2677 OptionalResourceType
2678 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2679 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2680 | ',' ResourceTypeKeyword {$$ = $2;}
2684 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
2685 | TermArg {$$ = $1;}
2688 OptionalSerializeRuleKeyword
2691 | ',' SerializeRuleKeyword {$$ = $2;}
2696 | ',' SlaveModeKeyword {$$ = $2;}
2702 | ',' ShareTypeKeyword {$$ = $2;}
2705 OptionalShareType_First
2707 | ShareTypeKeyword {$$ = $1;}
2712 | ',' StopBitsKeyword {$$ = $2;}
2718 | ',' StringData {$$ = $2;}
2723 | TermArg {$$ = $1;}
2729 | ',' TypeKeyword {$$ = $2;}
2735 | ',' TypeKeyword {$$ = $2;}
2738 OptionalTranslationType_Last
2741 | ',' TranslationKeyword {$$ = $2;}
2746 | ',' WireModeKeyword {$$ = $2;}
2751 | WordConst {$$ = $1;}
2754 OptionalWordConstExpr
2756 | ',' WordConstExpr {$$ = $2;}
2760 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2761 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2762 | ',' XferSizeKeyword {$$ = $2;}