2 /******************************************************************************
4 * Module Name: aslrules.y - Main Bison/Yacc production rules
5 * - Keep this file synched with the
6 * CvParseOpBlockType function in cvcompiler.c
8 *****************************************************************************/
10 /******************************************************************************
14 * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
15 * All rights reserved.
19 * 2.1. This is your license from Intel Corp. under its intellectual property
20 * rights. You may have additional license terms from the party that provided
21 * you this software, covering your right to use that party's intellectual
24 * 2.2. Intel grants
, free of charge
, to any person
("Licensee") obtaining a
25 * copy of the source code appearing in this file
("Covered Code") an
26 * irrevocable
, perpetual
, worldwide license under Intel
's copyrights in the
27 * base code distributed originally by Intel ("Original Intel Code") to copy,
28 * make derivatives, distribute, use and display any portion of the Covered
29 * Code in any form, with the right to sublicense such rights; and
31 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
32 * license (with the right to sublicense), under only those claims of Intel
33 * patents that are infringed by the Original Intel Code, to make, use, sell,
34 * offer to sell, and import the Covered Code and derivative works thereof
35 * solely to the minimum extent necessary to exercise the above copyright
36 * license, and in no event shall the patent license extend to any additions
37 * to or modifications of the Original Intel Code. No other license or right
38 * is granted directly or by implication, estoppel or otherwise;
40 * The above copyright and patent license is granted only if the following
45 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
46 * Redistribution of source code of any substantial portion of the Covered
47 * Code or modification with rights to further distribute source must include
48 * the above Copyright Notice, the above License, this list of Conditions,
49 * and the following Disclaimer and Export Compliance provision. In addition,
50 * Licensee must cause all Covered Code to which Licensee contributes to
51 * contain a file documenting the changes Licensee made to create that Covered
52 * Code and the date of any change. Licensee must include in that file the
53 * documentation of any changes made by any predecessor Licensee. Licensee
54 * must include a prominent statement that the modification is derived,
55 * directly or indirectly, from Original Intel Code.
57 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
58 * Redistribution of source code of any substantial portion of the Covered
59 * Code or modification without rights to further distribute source must
60 * include the following Disclaimer and Export Compliance provision in the
61 * documentation and/or other materials provided with distribution. In
62 * addition, Licensee may not authorize further sublicense of source of any
63 * portion of the Covered Code, and must include terms to the effect that the
64 * license from Licensee to its licensee is limited to the intellectual
65 * property embodied in the software Licensee provides to its licensee, and
66 * not to intellectual property embodied in modifications its licensee may
69 * 3.3. Redistribution of Executable. Redistribution in executable form of any
70 * substantial portion of the Covered Code or modification must reproduce the
71 * above Copyright Notice, and the following Disclaimer and Export Compliance
72 * provision in the documentation and/or other materials provided with the
75 * 3.4. Intel retains all right, title, and interest in and to the Original
78 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
79 * Intel shall be used in advertising or otherwise to promote the sale, use or
80 * other dealings in products derived from or relating to the Covered Code
81 * without prior written authorization from Intel.
83 * 4. Disclaimer and Export Compliance
85 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
86 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
87 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
88 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
89 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
90 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
93 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
94 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
95 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
96 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
97 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
98 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
99 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
102 * 4.3. Licensee shall not export, either directly or indirectly, any of this
103 * software or system incorporating such software without first obtaining any
104 * required license or other approval from the U. S. Department of Commerce or
105 * any other agency or department of the United States Government. In the
106 * event Licensee exports any such software from the United States or
107 * re-exports any such software from a foreign destination, Licensee shall
108 * ensure that the distribution and export/re-export of the software is in
109 * compliance with all laws, regulations, orders, or other restrictions of the
110 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
111 * any of its subsidiaries will export/re-export any technical data, process,
112 * software, or service, directly or indirectly, to any country for which the
113 * United States government or any agency thereof requires an export license,
114 * other governmental approval, or letter of assurance, without first obtaining
115 * such license, approval or letter.
117 *****************************************************************************
119 * Alternatively, you may choose to be licensed under the terms of the
122 * Redistribution and use in source and binary forms, with or without
123 * modification, are permitted provided that the following conditions
125 * 1. Redistributions of source code must retain the above copyright
126 * notice, this list of conditions, and the following disclaimer,
127 * without modification.
128 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
129 * substantially similar to the "NO WARRANTY" disclaimer below
130 * ("Disclaimer") and any redistribution must be conditioned upon
131 * including a substantially similar Disclaimer requirement for further
132 * binary redistribution.
133 * 3. Neither the names of the above-listed copyright holders nor the names
134 * of any contributors may be used to endorse or promote products derived
135 * from this software without specific prior written permission.
137 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
138 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
139 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
140 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
141 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
142 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
143 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
144 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
145 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
146 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
147 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
149 * Alternatively, you may choose to be licensed under the terms of the
150 * GNU General Public License ("GPL") version 2 as published by the Free
151 * Software Foundation.
153 *****************************************************************************/
157 /*******************************************************************************
159 * ASL Root and Secondary Terms
161 ******************************************************************************/
164 * Root term. Allow multiple #line directives before the definition block
165 * to handle output from preprocessors
168 : DefinitionBlockList
{$
<n
>$
= TrLinkOpChildren
(
169 TrCreateLeafOp
(PARSEOP_ASL_CODE
),1, $1);}
170 |
error {YYABORT; $$
= NULL
;}
175 * Note concerning support for "module-level code".
177 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
178 * methods (the so-called module-level code.) This support was explicitly
179 * removed in ACPI 2.0, but this type of code continues to be created by
180 * BIOS vendors. In order to support the disassembly and recompilation of
181 * such code (and the porting of ASL code to iASL), iASL supports this
182 * code in violation of the current ACPI specification.
184 * The grammar change to support module-level code is to revert the
185 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
186 * original use of {TermList} instead (see below.) This allows the use
187 * of Type1 and Type2 opcodes at module level.
189 * 04/2016: The module-level code is now allowed in the following terms:
190 * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm.
191 * The ObjectList term is obsolete and has been removed.
194 : PARSEOP_DEFINITION_BLOCK
195 PARSEOP_OPEN_PAREN
{$
<n
>$
= TrCreateLeafOp
(PARSEOP_DEFINITION_BLOCK
); COMMENT_CAPTURE_OFF
;}
202 PARSEOP_CLOSE_PAREN
{TrSetOpIntegerWidth
($6,$8);
203 TrSetOpEndLineNumber
($
<n
>3); COMMENT_CAPTURE_ON
;}
204 '{' TermList
'}' {$$
= TrLinkOpChildren
($
<n
>3,7,
205 $4,$6,$8,$10,$12,$14,$18);}
209 : DefinitionBlockTerm
210 | DefinitionBlockTerm
211 DefinitionBlockList
{$$
= TrLinkPeerOps
(2, $1,$2);}
215 /******* Basic ASCII identifiers **************************************************/
217 /* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
221 | PARSEOP_NAMESTRING
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESTRING
, (ACPI_NATIVE_INT
) $1);}
222 | PARSEOP_IO
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESTRING
, (ACPI_NATIVE_INT
) "IO");}
223 | PARSEOP_DMA
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESTRING
, (ACPI_NATIVE_INT
) "DMA");}
224 | PARSEOP_IRQ
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESTRING
, (ACPI_NATIVE_INT
) "IRQ");}
225 | PARSEOP_FOR
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESTRING
, (ACPI_NATIVE_INT
) "FOR");}
229 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafOp (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
230 TrNormalizeNameSeg ($1));}
235 : PARSEOP_NAMESEG
{$$
= TrCreateValuedLeafOp
(PARSEOP_NAMESEG
,
236 (ACPI_NATIVE_INT
) AslCompilerlval.s
);}
240 /******* Fundamental argument/statement types ***********************************/
246 | Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
247 | Type2StringOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
248 | Type2BufferOpcode
{}
249 | Type2BufferOrStringOpcode
{}
250 |
error {$$
= AslDoError
(); yyclearin;}
260 : {$$
= TrCreateNullTargetOp
();} /* Placeholder is a ZeroOp object */
261 |
',' {$$
= TrCreateNullTargetOp
();} /* Placeholder is a ZeroOp object */
262 |
',' SuperName
{$$
= TrSetOpFlags
($2, OP_IS_TARGET
);}
266 : ',' SuperName
{$$
= TrSetOpFlags
($2, OP_IS_TARGET
);}
270 : SimpleName
{$$
= TrSetOpFlags
($1, OP_IS_TERM_ARG
);}
271 | Type2Opcode
{$$
= TrSetOpFlags
($1, OP_IS_TERM_ARG
);}
272 | DataObject
{$$
= TrSetOpFlags
($1, OP_IS_TERM_ARG
);}
275 PARSEOP_CLOSE_PAREN
{$$
= TrSetOpFlags
($2, OP_IS_TERM_ARG
);}
279 NOTE: Removed from TermArg due to reduce/reduce conflicts:
280 | Type2IntegerOpcode {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
281 | Type2StringOpcode {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
282 | Type2BufferOpcode {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
283 | Type2BufferOrStringOpcode {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
289 PARSEOP_OPEN_PAREN
{TrSetOpIntegerValue
(PARSEOP_METHODCALL
, $1); COMMENT_CAPTURE_OFF
;}
291 PARSEOP_CLOSE_PAREN
{$$
= TrLinkChildOp
($1,$4); COMMENT_CAPTURE_ON
;}
294 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
297 : {$$
= TrCreateLeafOp
(PARSEOP_ONES
);} /* Placeholder is a OnesOp object */
298 |
',' {$$
= TrCreateLeafOp
(PARSEOP_ONES
);} /* Placeholder is a OnesOp object */
299 |
',' TermArg
{$$
= $2;}
303 * Data count for buffers and packages (byte count for buffers,
304 * element count for packages).
312 PARSEOP_CLOSE_PAREN
{$$
= $2;}
314 PARSEOP_CLOSE_PAREN
{$$
= NULL
;}
316 /* C-style (ASL+) -- adds equals term */
318 | PARSEOP_EXP_EQUALS
{$$
= NULL
;}
323 PARSEOP_EXP_EQUALS
{$$
= $2;}
328 PARSEOP_EXP_EQUALS
{$$
= NULL
;}
332 /******* List Terms **************************************************/
334 /* ACPI 3.0 -- allow semicolons between terms */
338 | TermList Term
{$$
= TrLinkPeerOp
(
339 TrSetOpFlags
($1, OP_RESULT_NOT_USED
),$2);}
340 | TermList Term
';' {$$
= TrLinkPeerOp
(
341 TrSetOpFlags
($1, OP_RESULT_NOT_USED
),$2);}
342 | TermList
';' Term
{$$
= TrLinkPeerOp
(
343 TrSetOpFlags
($1, OP_RESULT_NOT_USED
),$3);}
344 | TermList
';' Term
';' {$$
= TrLinkPeerOp
(
345 TrSetOpFlags
($1, OP_RESULT_NOT_USED
),$3);}
351 | ArgList
',' /* Allows a trailing comma at list end */
353 TermArg
{$$
= TrLinkPeerOp
($1,$3);}
359 | ByteList
',' /* Allows a trailing comma at list end */
361 ByteConstExpr
{$$
= TrLinkPeerOp
($1,$3);}
367 | DWordList
',' /* Allows a trailing comma at list end */
369 DWordConstExpr
{$$
= TrLinkPeerOp
($1,$3);}
375 | FieldUnitList
',' /* Allows a trailing comma at list end */
377 FieldUnit
{$$
= TrLinkPeerOp
($1,$3);}
388 : ',' AmlPackageLengthTerm
{$$
= TrCreateOp
(PARSEOP_RESERVED_BYTES
,1,$2);}
390 AmlPackageLengthTerm
{$$
= TrLinkChildOp
($1,$3);}
394 : CompilerDirective
{}
396 | NameSpaceModifier
{}
397 /* | StructureTerm {} */
403 | PackageList
',' /* Allows a trailing comma at list end */
405 PackageElement
{$$
= TrLinkPeerOp
($1,$3);}
413 /* Rules for specifying the type of one method argument or return value */
417 | ObjectTypeKeyword
{$$
= $1;}
418 | ParameterTypePackage
','
419 ObjectTypeKeyword
{$$
= TrLinkPeerOps
(2,$1,$3);}
422 ParameterTypePackageList
424 | ObjectTypeKeyword
{$$
= $1;}
425 |
'{' ParameterTypePackage
'}' {$$
= $2;}
428 OptionalParameterTypePackage
429 : {$$
= TrCreateLeafOp
(PARSEOP_DEFAULT_ARG
);}
430 |
',' ParameterTypePackageList
{$$
= TrLinkOpChildren
(
431 TrCreateLeafOp
(PARSEOP_DEFAULT_ARG
),1,$2);}
434 /* Rules for specifying the types for method arguments */
436 ParameterTypesPackage
437 : ParameterTypePackageList
{$$
= $1;}
438 | ParameterTypesPackage
','
439 ParameterTypePackageList
{$$
= TrLinkPeerOps
(2,$1,$3);}
442 ParameterTypesPackageList
444 | ObjectTypeKeyword
{$$
= $1;}
445 |
'{' ParameterTypesPackage
'}' {$$
= $2;}
448 OptionalParameterTypesPackage
449 : {$$
= TrCreateLeafOp
(PARSEOP_DEFAULT_ARG
);}
450 |
',' ParameterTypesPackageList
{$$
= TrLinkOpChildren
(
451 TrCreateLeafOp
(PARSEOP_DEFAULT_ARG
),1,$2);}
455 * Case-Default list; allow only one Default term and unlimited Case terms
461 | CaseDefaultTermList
462 CaseTerm
{$$
= TrLinkPeerOp
($1,$2);}
463 | CaseDefaultTermList
464 DefaultTerm
{$$
= TrLinkPeerOp
($1,$2);}
466 /* Original - attempts to force zero or one default term within the switch */
473 CaseTermList {$$ = TrLinkPeerOp ($1,TrLinkPeerOp ($2, $3));}
475 CaseTerm {$$ = TrLinkPeerOp ($1,$2);}
482 CaseTerm {$$ = TrLinkPeerOp ($1,$2);}
487 /*******************************************************************************
489 * ASL Data and Constant Terms
491 ******************************************************************************/
501 : Type5Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
502 | Type2BufferOrStringOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
503 | Type2BufferOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
512 : Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
513 | Type3Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
519 : Type2StringOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
524 : Integer
{$$
= TrSetOpIntegerValue
(PARSEOP_BYTECONST
, $1);}
528 : Integer
{$$
= TrSetOpIntegerValue
(PARSEOP_WORDCONST
, $1);}
532 : Integer
{$$
= TrSetOpIntegerValue
(PARSEOP_DWORDCONST
, $1);}
536 : Integer
{$$
= TrSetOpIntegerValue
(PARSEOP_QWORDCONST
, $1);}
540 * The OP_COMPILE_TIME_CONST flag in the following constant expressions
541 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
542 * to simple integers. It is an error if these types of expressions cannot be
543 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
544 * Note: The required byte length of the constant is passed through to the
545 * constant folding code in the node AmlLength field.
548 : Type3Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
549 TrSetOpAmlLength
($1, 1);}
550 | Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
551 TrSetOpAmlLength
($1, 1);}
552 | ConstExprTerm
{$$
= TrSetOpIntegerValue
(PARSEOP_BYTECONST
, $1);}
557 : Type3Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
558 TrSetOpAmlLength
($1, 2);}
559 | Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
560 TrSetOpAmlLength
($1, 2);}
561 | ConstExprTerm
{$$
= TrSetOpIntegerValue
(PARSEOP_WORDCONST
, $1);}
566 : Type3Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
567 TrSetOpAmlLength
($1, 4);}
568 | Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
569 TrSetOpAmlLength
($1, 4);}
570 | ConstExprTerm
{$$
= TrSetOpIntegerValue
(PARSEOP_DWORDCONST
, $1);}
575 : Type3Opcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
576 TrSetOpAmlLength
($1, 8);}
577 | Type2IntegerOpcode
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);
578 TrSetOpAmlLength
($1, 8);}
579 | ConstExprTerm
{$$
= TrSetOpIntegerValue
(PARSEOP_QWORDCONST
, $1);}
585 | PARSEOP_REVISION
{$$
= TrCreateLeafOp
(PARSEOP_REVISION
);}
589 : PARSEOP_ZERO
{$$
= TrCreateValuedLeafOp
(PARSEOP_ZERO
, 0);}
590 | PARSEOP_ONE
{$$
= TrCreateValuedLeafOp
(PARSEOP_ONE
, 1);}
591 | PARSEOP_ONES
{$$
= TrCreateValuedLeafOp
(PARSEOP_ONES
, ACPI_UINT64_MAX
);}
592 | PARSEOP___DATE__
{$$
= TrCreateConstantLeafOp
(PARSEOP___DATE__
);}
593 | PARSEOP___FILE__
{$$
= TrCreateConstantLeafOp
(PARSEOP___FILE__
);}
594 | PARSEOP___LINE__
{$$
= TrCreateConstantLeafOp
(PARSEOP___LINE__
);}
595 | PARSEOP___PATH__
{$$
= TrCreateConstantLeafOp
(PARSEOP___PATH__
);}
596 | PARSEOP___METHOD__
{$$
= TrCreateConstantLeafOp
(PARSEOP___METHOD__
);}
600 : PARSEOP_INTEGER
{$$
= TrCreateValuedLeafOp
(PARSEOP_INTEGER
,
605 : PARSEOP_STRING_LITERAL
{$$
= TrCreateValuedLeafOp
(PARSEOP_STRING_LITERAL
,
606 (ACPI_NATIVE_INT
) AslCompilerlval.s
);}
610 /*******************************************************************************
614 ******************************************************************************/
624 | CreateBitFieldTerm
{}
625 | CreateByteFieldTerm
{}
626 | CreateDWordFieldTerm
{}
628 | CreateQWordFieldTerm
{}
629 | CreateWordFieldTerm
{}
647 /* | NameTermAslPlus {} */
657 /* For ObjectType(), SuperName except for MethodInvocationTerm */
668 /* For DeRefOf(), SuperName except for DerefOf and Debug */
678 | MethodInvocationTerm
{}
681 /* For RefOf(), SuperName except for RefOf and MethodInvocationTerm */
691 /* For CondRefOf(), SuperName except for RefOf and MethodInvocationTerm */
702 * Opcode types, as defined in the ACPI specification
737 | MethodInvocationTerm
{}
743 Type2IntegerOpcode
/* "Type3" opcodes */
744 : Expression
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
749 | FindSetLeftBitTerm
{}
750 | FindSetRightBitTerm
{}
754 /* | StructureIndexTerm {} */
755 /* | StructurePointerTerm {} */
759 | LGreaterEqualTerm
{}
781 Type2StringOpcode
/* "Type4" Opcodes */
782 : ToDecimalStringTerm
{}
787 Type2BufferOpcode
/* "Type5" Opcodes */
792 Type2BufferOrStringOpcode
793 : ConcatTerm
{$$
= TrSetOpFlags
($1, OP_COMPILE_TIME_CONST
);}
800 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
809 | ToDecimalStringTerm {}
816 /* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
819 : ResourceTemplateTerm
{}
830 /* | StructureIndexTerm {} */
831 /* | StructurePointerTerm {} */
832 | MethodInvocationTerm
{}
836 /*******************************************************************************
840 ******************************************************************************/
843 : Integer
{$$
= TrSetOpIntegerValue
(PARSEOP_PACKAGE_LENGTH
,
844 (ACPI_PARSE_OBJECT
*) $1);}
848 : ',' NameString
{$$
= $2;}
849 |
',' error {$$
= AslDoError
(); yyclearin;}
853 : ',' TermArg
{$$
= $2;}
854 |
',' error {$$
= AslDoError
(); yyclearin;}
858 : {$$
= TrCreateLeafOp
(PARSEOP_ZERO
);} /* Placeholder is a ZeroOp object */
859 |
',' {$$
= TrCreateLeafOp
(PARSEOP_ZERO
);} /* Placeholder is a ZeroOp object */
860 |
',' TermArg
{$$
= $2;}
864 : {$$
= TrSetOpFlags
(TrCreateLeafOp
(PARSEOP_ZERO
),
865 OP_IS_NULL_RETURN
);} /* Placeholder is a ZeroOp object */
869 OptionalSerializeRuleKeyword
872 |
',' SerializeRuleKeyword
{$$
= $2;}
876 : {$$
= TrCreateLeafOp
(PARSEOP_DEFAULT_ARG
);}
882 | WordConst
{$$
= $1;}