2 /******************************************************************************
4 * Module Name: aslrules.y - Main Bison/Yacc production rules
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2016, 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 * ASL Root and Secondary Terms
51 ******************************************************************************/
54 * Root term. Allow multiple #line directives before the definition block
55 * to handle output from preprocessors
58 : DefinitionBlockList {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
59 | error {YYABORT; $$ = NULL;}
64 * Note concerning support for "module-level code".
66 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
67 * methods (the so-called module-level code.) This support was explicitly
68 * removed in ACPI 2.0, but this type of code continues to be created by
69 * BIOS vendors. In order to support the disassembly and recompilation of
70 * such code (and the porting of ASL code to iASL), iASL supports this
71 * code in violation of the current ACPI specification.
73 * The grammar change to support module-level code is to revert the
74 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
75 * original use of {TermList} instead (see below.) This allows the use
76 * of Type1 and Type2 opcodes at module level.
78 * 04/2016: The module-level code is now allowed in the following terms:
79 * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
80 * The ObjectList term is obsolete and has been removed.
83 : PARSEOP_DEFINITION_BLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK);}
90 ')' {TrSetEndLineNumber ($<n>3);}
91 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
97 DefinitionBlockList {$$ = TrLinkPeerNodes (2, $1,$2);}
108 : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
109 | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
110 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
114 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
115 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
116 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
117 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
118 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
122 NOTE: Removed from TermArg due to reduce/reduce conflicts:
123 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
124 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
125 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
126 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
131 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
132 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
135 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
138 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
139 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
140 | ',' TermArg {$$ = $2;}
144 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
149 /******* List Terms **************************************************/
154 | ArgList ',' /* Allows a trailing comma at list end */
156 TermArg {$$ = TrLinkPeerNode ($1,$3);}
162 | ByteList ',' /* Allows a trailing comma at list end */
164 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
170 | DWordList ',' /* Allows a trailing comma at list end */
172 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
178 | FieldUnitList ',' /* Allows a trailing comma at list end */
180 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
191 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
193 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
197 : CompilerDirective {}
199 | NameSpaceModifier {}
205 | PackageList ',' /* Allows a trailing comma at list end */
207 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
215 /* Rules for specifying the type of one method argument or return value */
219 | ObjectTypeKeyword {$$ = $1;}
220 | ParameterTypePackage ','
221 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
224 ParameterTypePackageList
226 | ObjectTypeKeyword {$$ = $1;}
227 | '{' ParameterTypePackage '}' {$$ = $2;}
230 OptionalParameterTypePackage
231 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
232 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
235 /* Rules for specifying the types for method arguments */
237 ParameterTypesPackage
238 : ParameterTypePackageList {$$ = $1;}
239 | ParameterTypesPackage ','
240 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
243 ParameterTypesPackageList
245 | ObjectTypeKeyword {$$ = $1;}
246 | '{' ParameterTypesPackage '}' {$$ = $2;}
249 OptionalParameterTypesPackage
250 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
251 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
254 /* ACPI 3.0 -- allow semicolons between terms */
258 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
259 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
260 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
261 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
268 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
269 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
270 | Type2BufferOpcode {}
271 | Type2BufferOrStringOpcode {}
272 | error {$$ = AslDoError(); yyclearin;}
276 * Case-Default list; allow only one Default term and unlimited Case terms
282 | CaseDefaultTermList
283 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
284 | CaseDefaultTermList
285 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
287 /* Original - attempts to force zero or one default term within the switch */
294 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
296 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
303 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
308 /*******************************************************************************
310 * ASL Data and Constant Terms
312 ******************************************************************************/
322 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
323 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
324 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
333 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
334 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
340 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
345 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
349 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
353 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
357 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
361 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
362 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
363 * to simple integers. It is an error if these types of expressions cannot be
364 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
365 * Note: The required byte length of the constant is passed through to the
366 * constant folding code in the node AmlLength field.
369 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
370 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
371 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
376 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
377 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
378 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
383 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
384 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
385 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
390 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
391 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
392 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
398 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
402 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
403 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
404 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
405 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
406 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
407 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
408 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
412 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
416 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
420 /*******************************************************************************
424 ******************************************************************************/
434 | CreateBitFieldTerm {}
435 | CreateByteFieldTerm {}
436 | CreateDWordFieldTerm {}
438 | CreateQWordFieldTerm {}
439 | CreateWordFieldTerm {}
460 /* For ObjectType: SuperName except for MethodInvocationTerm */
470 /* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
474 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
518 | MethodInvocationTerm {}
524 Type2IntegerOpcode /* "Type3" opcodes */
525 : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
530 | FindSetLeftBitTerm {}
531 | FindSetRightBitTerm {}
538 | LGreaterEqualTerm {}
560 Type2StringOpcode /* "Type4" Opcodes */
561 : ToDecimalStringTerm {}
566 Type2BufferOpcode /* "Type5" Opcodes */
571 Type2BufferOrStringOpcode
572 : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
579 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
588 | ToDecimalStringTerm {}
596 : ResourceTemplateTerm {}
607 | MethodInvocationTerm {}
611 /*******************************************************************************
615 ******************************************************************************/
618 : PARSEOP_ACCESSAS '('
620 OptionalAccessAttribTerm
621 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
622 | PARSEOP_ACCESSAS '('
623 error ')' {$$ = AslDoError(); yyclearin;}
627 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
630 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
631 | PARSEOP_ACQUIRE '('
632 error ')' {$$ = AslDoError(); yyclearin;}
636 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
640 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
642 error ')' {$$ = AslDoError(); yyclearin;}
646 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
649 ')' {$$ = TrLinkChildren ($<n>3,2,$4,
650 TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
652 error ')' {$$ = AslDoError(); yyclearin;}
656 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
660 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
662 error ')' {$$ = AslDoError(); yyclearin;}
666 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
667 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
668 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
669 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
670 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
671 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
672 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
676 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
680 ',' AccessTypeKeyword
682 ',' UpdateRuleKeyword
684 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
685 | PARSEOP_BANKFIELD '('
686 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
690 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
694 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
698 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
701 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
703 error ')' {$$ = AslDoError(); yyclearin;}
712 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
715 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
717 error ')' {$$ = AslDoError(); yyclearin;}
721 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
725 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
726 | PARSEOP_CONCATENATE '('
727 error ')' {$$ = AslDoError(); yyclearin;}
731 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
735 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
736 | PARSEOP_CONCATENATERESTEMPLATE '('
737 error ')' {$$ = AslDoError(); yyclearin;}
741 : PARSEOP_CONNECTION '('
743 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
744 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
746 ')' {$$ = TrLinkChildren ($<n>3, 1,
747 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
748 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
749 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
751 | PARSEOP_CONNECTION '('
752 error ')' {$$ = AslDoError(); yyclearin;}
756 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
759 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
760 | PARSEOP_CONDREFOF '('
761 error ')' {$$ = AslDoError(); yyclearin;}
765 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
769 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
772 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
773 | PARSEOP_COPYOBJECT '('
774 error ')' {$$ = AslDoError(); yyclearin;}
778 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
782 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
783 | PARSEOP_CREATEBITFIELD '('
784 error ')' {$$ = AslDoError(); yyclearin;}
788 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
792 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
793 | PARSEOP_CREATEBYTEFIELD '('
794 error ')' {$$ = AslDoError(); yyclearin;}
798 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
802 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
803 | PARSEOP_CREATEDWORDFIELD '('
804 error ')' {$$ = AslDoError(); yyclearin;}
808 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
813 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
814 | PARSEOP_CREATEFIELD '('
815 error ')' {$$ = AslDoError(); yyclearin;}
819 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
823 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
824 | PARSEOP_CREATEQWORDFIELD '('
825 error ')' {$$ = AslDoError(); yyclearin;}
829 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
833 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
834 | PARSEOP_CREATEWORDFIELD '('
835 error ')' {$$ = AslDoError(); yyclearin;}
839 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
844 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
845 | PARSEOP_DATATABLEREGION '('
846 error ')' {$$ = AslDoError(); yyclearin;}
850 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
854 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
856 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
857 | PARSEOP_DECREMENT '('
858 error ')' {$$ = AslDoError(); yyclearin;}
862 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
863 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
864 | PARSEOP_DEFAULT '{'
865 error '}' {$$ = AslDoError(); yyclearin;}
869 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
871 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
872 | PARSEOP_DEREFOF '('
873 error ')' {$$ = AslDoError(); yyclearin;}
877 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
880 TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
882 error ')' {$$ = AslDoError(); yyclearin;}
886 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
891 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
893 error ')' {$$ = AslDoError(); yyclearin;}
898 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
900 error ')' {$$ = AslDoError(); yyclearin;}
904 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
909 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
910 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
913 error '}' {$$ = AslDoError(); yyclearin;}
916 error {$$ = AslDoError(); yyclearin;}
918 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
919 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
921 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
922 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
923 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
926 error ')' {$$ = AslDoError(); yyclearin;}
929 error {$$ = AslDoError(); yyclearin;}
933 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
935 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
937 error ')' {$$ = AslDoError(); yyclearin;}
941 : PARSEOP_EXTERNAL '('
943 OptionalObjectTypeKeyword
944 OptionalParameterTypePackage
945 OptionalParameterTypesPackage
946 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
947 | PARSEOP_EXTERNAL '('
948 error ')' {$$ = AslDoError(); yyclearin;}
952 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
956 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
958 error ')' {$$ = AslDoError(); yyclearin;}
962 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
964 ',' AccessTypeKeyword
966 ',' UpdateRuleKeyword
968 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
970 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
974 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
977 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
978 | PARSEOP_FINDSETLEFTBIT '('
979 error ')' {$$ = AslDoError(); yyclearin;}
983 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
986 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
987 | PARSEOP_FINDSETRIGHTBIT '('
988 error ')' {$$ = AslDoError(); yyclearin;}
991 /* Convert a For() loop to a While() loop */
993 : PARSEOP_FOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
994 OptionalTermArg ',' {}
995 OptionalPredicate ','
996 OptionalTermArg {$<n>$ = TrLinkPeerNode ($4,$<n>3);
997 TrSetParent ($9,$<n>3);} /* New parent is WHILE */
998 ')' '{' TermList '}' {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
999 {$<n>$ = TrLinkPeerNode ($13,$9);
1004 : {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
1005 | TermArg {$$ = $1;}
1009 : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
1013 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1014 | PARSEOP_FPRINTF '('
1015 error ')' {$$ = AslDoError(); yyclearin;}
1019 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1022 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1023 | PARSEOP_FROMBCD '('
1024 error ')' {$$ = AslDoError(); yyclearin;}
1028 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1030 OptionalParameterTypePackage
1031 OptionalParameterTypesPackage
1033 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1034 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1035 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1036 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1037 | PARSEOP_FUNCTION '('
1038 error ')' {$$ = AslDoError(); yyclearin;}
1042 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1045 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1048 error ')' {$$ = AslDoError(); yyclearin;}
1052 : PARSEOP_INCLUDE '('
1053 String ')' {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
1054 FlOpenIncludeFile ($3);}
1058 : PARSEOP_INCLUDE_END {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
1062 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1064 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1065 | PARSEOP_INCREMENT '('
1066 error ')' {$$ = AslDoError(); yyclearin;}
1070 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1073 ',' AccessTypeKeyword
1075 ',' UpdateRuleKeyword
1077 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1078 | PARSEOP_INDEXFIELD '('
1079 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1083 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1087 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1089 error ')' {$$ = AslDoError(); yyclearin;}
1093 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1096 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1098 error ')' {$$ = AslDoError(); yyclearin;}
1102 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1105 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1106 | PARSEOP_LEQUAL '('
1107 error ')' {$$ = AslDoError(); yyclearin;}
1111 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1114 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1115 | PARSEOP_LGREATEREQUAL '('
1116 error ')' {$$ = AslDoError(); yyclearin;}
1120 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1123 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1124 | PARSEOP_LGREATER '('
1125 error ')' {$$ = AslDoError(); yyclearin;}
1129 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1132 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1133 | PARSEOP_LLESSEQUAL '('
1134 error ')' {$$ = AslDoError(); yyclearin;}
1138 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1141 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1143 error ')' {$$ = AslDoError(); yyclearin;}
1147 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1150 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1151 | PARSEOP_LNOTEQUAL '('
1152 error ')' {$$ = AslDoError(); yyclearin;}
1156 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1158 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1160 error ')' {$$ = AslDoError(); yyclearin;}
1164 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1171 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1172 | PARSEOP_LOADTABLE '('
1173 error ')' {$$ = AslDoError(); yyclearin;}
1177 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1180 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1182 error ')' {$$ = AslDoError(); yyclearin;}
1186 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1187 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1188 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1189 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1190 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1191 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1192 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1193 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1197 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1200 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1202 error ')' {$$ = AslDoError(); yyclearin;}
1206 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1213 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1215 error ')' {$$ = AslDoError(); yyclearin;}
1219 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1221 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1222 OptionalSerializeRuleKeyword
1223 OptionalByteConstExpr
1224 OptionalParameterTypePackage
1225 OptionalParameterTypesPackage
1227 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1228 | PARSEOP_METHOD '('
1229 error ')' {$$ = AslDoError(); yyclearin;}
1233 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1238 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1240 error ')' {$$ = AslDoError(); yyclearin;}
1244 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1248 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1250 error ')' {$$ = AslDoError(); yyclearin;}
1254 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1258 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1259 | PARSEOP_MULTIPLY '('
1260 error ')' {$$ = AslDoError(); yyclearin;}
1264 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1267 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1269 error ')' {$$ = AslDoError(); yyclearin;}
1273 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1276 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1278 error ')' {$$ = AslDoError(); yyclearin;}
1282 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1286 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1288 error ')' {$$ = AslDoError(); yyclearin;}
1292 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1296 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1300 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1302 error ')' {$$ = AslDoError(); yyclearin;}
1306 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1309 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1310 | PARSEOP_NOTIFY '('
1311 error ')' {$$ = AslDoError(); yyclearin;}
1315 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1318 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1320 error ')' {$$ = AslDoError(); yyclearin;}
1324 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1326 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1327 | PARSEOP_OBJECTTYPE '('
1328 error ')' {$$ = AslDoError(); yyclearin;}
1332 : PARSEOP_OFFSET '('
1333 AmlPackageLengthTerm
1334 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1335 | PARSEOP_OFFSET '('
1336 error ')' {$$ = AslDoError(); yyclearin;}
1340 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1342 ',' OpRegionSpaceIdTerm
1345 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1346 | PARSEOP_OPERATIONREGION '('
1347 error ')' {$$ = AslDoError(); yyclearin;}
1351 : RegionSpaceKeyword {}
1352 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1356 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1360 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1362 error ')' {$$ = AslDoError(); yyclearin;}
1366 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
1367 VarPackageLengthTerm
1369 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1370 | PARSEOP_PACKAGE '('
1371 error ')' {$$ = AslDoError(); yyclearin;}
1375 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1380 TermList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1381 | PARSEOP_POWERRESOURCE '('
1382 error ')' {$$ = AslDoError(); yyclearin;}
1386 : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
1389 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1390 | PARSEOP_PRINTF '('
1391 error ')' {$$ = AslDoError(); yyclearin;}
1396 | TermArg {$$ = $1;}
1398 TermArg {$$ = TrLinkPeerNode ($1, $3);}
1402 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1405 OptionalDWordConstExpr
1406 OptionalByteConstExpr
1408 TermList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1409 | PARSEOP_PROCESSOR '('
1410 error ')' {$$ = AslDoError(); yyclearin;}
1414 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
1417 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1418 | PARSEOP_DATABUFFER '('
1419 error ')' {$$ = AslDoError(); yyclearin;}
1423 * In RefOf, the node isn't really a target, but we can't keep track of it after
1424 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1427 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1429 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1431 error ')' {$$ = AslDoError(); yyclearin;}
1435 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1437 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1438 | PARSEOP_RELEASE '('
1439 error ')' {$$ = AslDoError(); yyclearin;}
1443 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1445 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1447 error ')' {$$ = AslDoError(); yyclearin;}
1451 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1453 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1454 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1455 | PARSEOP_RETURN '('
1456 error ')' {$$ = AslDoError(); yyclearin;}
1460 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1463 TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1465 error ')' {$$ = AslDoError(); yyclearin;}
1469 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1473 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1474 | PARSEOP_SHIFTLEFT '('
1475 error ')' {$$ = AslDoError(); yyclearin;}
1479 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1483 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1484 | PARSEOP_SHIFTRIGHT '('
1485 error ')' {$$ = AslDoError(); yyclearin;}
1489 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1491 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1492 | PARSEOP_SIGNAL '('
1493 error ')' {$$ = AslDoError(); yyclearin;}
1497 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1499 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1500 | PARSEOP_SIZEOF '('
1501 error ')' {$$ = AslDoError(); yyclearin;}
1505 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1507 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1509 error ')' {$$ = AslDoError(); yyclearin;}
1513 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1515 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1517 error ')' {$$ = AslDoError(); yyclearin;}
1521 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1524 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1526 error ')' {$$ = AslDoError(); yyclearin;}
1530 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1534 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1535 | PARSEOP_SUBTRACT '('
1536 error ')' {$$ = AslDoError(); yyclearin;}
1539 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1542 CaseDefaultTermList '}'
1543 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1544 | PARSEOP_SWITCH '('
1545 error ')' {$$ = AslDoError(); yyclearin;}
1549 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1552 TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1553 | PARSEOP_THERMALZONE '('
1554 error ')' {$$ = AslDoError(); yyclearin;}
1558 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1559 ')' {$$ = TrLinkChildren ($<n>3,0);}
1560 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1562 error ')' {$$ = AslDoError(); yyclearin;}
1566 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1569 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1571 error ')' {$$ = AslDoError(); yyclearin;}
1575 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1578 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1579 | PARSEOP_TOBUFFER '('
1580 error ')' {$$ = AslDoError(); yyclearin;}
1584 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1587 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1588 | PARSEOP_TODECIMALSTRING '('
1589 error ')' {$$ = AslDoError(); yyclearin;}
1593 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1596 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1597 | PARSEOP_TOHEXSTRING '('
1598 error ')' {$$ = AslDoError(); yyclearin;}
1602 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1605 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1606 | PARSEOP_TOINTEGER '('
1607 error ')' {$$ = AslDoError(); yyclearin;}
1611 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
1613 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1615 error ')' {$$ = AslDoError(); yyclearin;}
1621 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);}
1623 PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);}
1624 | PldKeywordList ',' /* Allows a trailing comma at list end */
1625 | PldKeywordList ','
1627 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1628 | PldKeywordList ','
1630 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1635 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1639 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1640 | PARSEOP_TOSTRING '('
1641 error ')' {$$ = AslDoError(); yyclearin;}
1645 : PARSEOP_TOUUID '('
1646 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1647 | PARSEOP_TOUUID '('
1648 error ')' {$$ = AslDoError(); yyclearin;}
1652 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
1654 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
1655 | PARSEOP_UNICODE '('
1656 error ')' {$$ = AslDoError(); yyclearin;}
1660 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1662 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1663 | PARSEOP_UNLOAD '('
1664 error ')' {$$ = AslDoError(); yyclearin;}
1668 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1671 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1673 error ')' {$$ = AslDoError(); yyclearin;}
1677 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1681 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1683 error ')' {$$ = AslDoError(); yyclearin;}
1687 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1689 ')' '{' TermList '}'
1690 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1692 error ')' {$$ = AslDoError(); yyclearin;}
1696 /*******************************************************************************
1700 ******************************************************************************/
1702 AmlPackageLengthTerm
1703 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
1707 : ',' NameString {$$ = $2;}
1708 | ',' error {$$ = AslDoError (); yyclearin;}
1712 : ',' TermArg {$$ = $2;}
1713 | ',' error {$$ = AslDoError (); yyclearin;}
1717 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
1718 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
1719 | ',' TermArg {$$ = $2;}
1723 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
1724 | TermArg {$$ = $1;}
1727 OptionalSerializeRuleKeyword
1730 | ',' SerializeRuleKeyword {$$ = $2;}
1734 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1735 | TermArg {$$ = $1;}
1738 OptionalBufferLength
1740 | TermArg {$$ = $1;}
1745 | WordConst {$$ = $1;}