aslrules.y revision 1.1.1.3 1 NoEcho('
2 /******************************************************************************
3 *
4 * Module Name: aslrules.y - Main Bison/Yacc production rules
5 *
6 *****************************************************************************/
7
8 /*
9 * Copyright (C) 2000 - 2016, Intel Corp.
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
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.
26 *
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.
30 *
31 * NO WARRANTY
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.
43 */
44
45 ')
46
47 /*******************************************************************************
48 *
49 * ASL Root and Secondary Terms
50 *
51 ******************************************************************************/
52
53 /*
54 * Root term. Allow multiple #line directives before the definition block
55 * to handle output from preprocessors
56 */
57 AslCode
58 : DefinitionBlockList {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
59 | error {YYABORT; $$ = NULL;}
60 ;
61
62
63 /*
64 * Note concerning support for "module-level code".
65 *
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.
72 *
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.
77 */
78 DefinitionBlockTerm
79 : PARSEOP_DEFINITION_BLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK);}
80 String ','
81 String ','
82 ByteConst ','
83 String ','
84 String ','
85 DWordConst
86 ')' {TrSetEndLineNumber ($<n>3);}
87 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
88 ;
89
90 DefinitionBlockList
91 : DefinitionBlockTerm
92 | DefinitionBlockTerm
93 DefinitionBlockList {$$ = TrLinkPeerNodes (2, $1,$2);}
94 ;
95
96 SuperName
97 : NameString {}
98 | ArgTerm {}
99 | LocalTerm {}
100 | DebugTerm {}
101 | Type6Opcode {}
102
103 Target
104 : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
105 | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
106 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
107 ;
108
109 TermArg
110 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
111 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
112 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
113 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
114 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
115 ;
116
117 /*
118 NOTE: Removed from TermArg due to reduce/reduce conflicts:
119 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
120 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
121 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
122 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
123
124 */
125
126 MethodInvocationTerm
127 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
128 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
129 ;
130
131 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
132
133 OptionalCount
134 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
135 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
136 | ',' TermArg {$$ = $2;}
137 ;
138
139 VarPackageLengthTerm
140 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
141 | TermArg {$$ = $1;}
142 ;
143
144
145 /******* List Terms **************************************************/
146
147 ArgList
148 : {$$ = NULL;}
149 | TermArg
150 | ArgList ',' /* Allows a trailing comma at list end */
151 | ArgList ','
152 TermArg {$$ = TrLinkPeerNode ($1,$3);}
153 ;
154
155 ByteList
156 : {$$ = NULL;}
157 | ByteConstExpr
158 | ByteList ',' /* Allows a trailing comma at list end */
159 | ByteList ','
160 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
161 ;
162
163 DWordList
164 : {$$ = NULL;}
165 | DWordConstExpr
166 | DWordList ',' /* Allows a trailing comma at list end */
167 | DWordList ','
168 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
169 ;
170
171 FieldUnitList
172 : {$$ = NULL;}
173 | FieldUnit
174 | FieldUnitList ',' /* Allows a trailing comma at list end */
175 | FieldUnitList ','
176 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
177 ;
178
179 FieldUnit
180 : FieldUnitEntry {}
181 | OffsetTerm {}
182 | AccessAsTerm {}
183 | ConnectionTerm {}
184 ;
185
186 FieldUnitEntry
187 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
188 | NameSeg ','
189 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
190 ;
191
192 ObjectList
193 : {$$ = NULL;}
194 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
195 | error {$$ = AslDoError(); yyclearin;}
196 ;
197
198 Object
199 : CompilerDirective {}
200 | NamedObject {}
201 | NameSpaceModifier {}
202 ;
203
204 PackageList
205 : {$$ = NULL;}
206 | PackageElement
207 | PackageList ',' /* Allows a trailing comma at list end */
208 | PackageList ','
209 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
210 ;
211
212 PackageElement
213 : DataObject {}
214 | NameString {}
215 ;
216
217 /* Rules for specifying the type of one method argument or return value */
218
219 ParameterTypePackage
220 : {$$ = NULL;}
221 | ObjectTypeKeyword {$$ = $1;}
222 | ParameterTypePackage ','
223 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
224 ;
225
226 ParameterTypePackageList
227 : {$$ = NULL;}
228 | ObjectTypeKeyword {$$ = $1;}
229 | '{' ParameterTypePackage '}' {$$ = $2;}
230 ;
231
232 OptionalParameterTypePackage
233 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
234 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
235 ;
236
237 /* Rules for specifying the types for method arguments */
238
239 ParameterTypesPackage
240 : ParameterTypePackageList {$$ = $1;}
241 | ParameterTypesPackage ','
242 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
243 ;
244
245 ParameterTypesPackageList
246 : {$$ = NULL;}
247 | ObjectTypeKeyword {$$ = $1;}
248 | '{' ParameterTypesPackage '}' {$$ = $2;}
249 ;
250
251 OptionalParameterTypesPackage
252 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
253 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
254 ;
255
256 /* ACPI 3.0 -- allow semicolons between terms */
257
258 TermList
259 : {$$ = NULL;}
260 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
261 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
262 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
263 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
264 ;
265
266 Term
267 : Object {}
268 | Type1Opcode {}
269 | Type2Opcode {}
270 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
271 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
272 | Type2BufferOpcode {}
273 | Type2BufferOrStringOpcode {}
274 | error {$$ = AslDoError(); yyclearin;}
275 ;
276
277 /*
278 * Case-Default list; allow only one Default term and unlimited Case terms
279 */
280 CaseDefaultTermList
281 : {$$ = NULL;}
282 | CaseTerm {}
283 | DefaultTerm {}
284 | CaseDefaultTermList
285 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
286 | CaseDefaultTermList
287 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
288
289 /* Original - attempts to force zero or one default term within the switch */
290
291 /*
292 CaseDefaultTermList
293 : {$$ = NULL;}
294 | CaseTermList
295 DefaultTerm
296 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
297 | CaseTermList
298 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
299 ;
300
301 CaseTermList
302 : {$$ = NULL;}
303 | CaseTerm {}
304 | CaseTermList
305 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
306 ;
307 */
308
309
310 /*******************************************************************************
311 *
312 * ASL Data and Constant Terms
313 *
314 ******************************************************************************/
315
316 DataObject
317 : BufferData {}
318 | PackageData {}
319 | IntegerData {}
320 | StringData {}
321 ;
322
323 BufferData
324 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
325 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
326 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
327 | BufferTerm {}
328 ;
329
330 PackageData
331 : PackageTerm {}
332 ;
333
334 IntegerData
335 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
336 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
337 | Integer {}
338 | ConstTerm {}
339 ;
340
341 StringData
342 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
343 | String {}
344 ;
345
346 ByteConst
347 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
348 ;
349
350 WordConst
351 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
352 ;
353
354 DWordConst
355 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
356 ;
357
358 QWordConst
359 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
360 ;
361
362 /*
363 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions
364 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes
365 * to simple integers. It is an error if these types of expressions cannot be
366 * reduced, since the AML grammar for ****ConstExpr requires a simple constant.
367 * Note: The required byte length of the constant is passed through to the
368 * constant folding code in the node AmlLength field.
369 */
370 ByteConstExpr
371 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
372 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
373 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
374 | ByteConst {}
375 ;
376
377 WordConstExpr
378 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
379 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
380 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
381 | WordConst {}
382 ;
383
384 DWordConstExpr
385 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
386 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
387 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
388 | DWordConst {}
389 ;
390
391 QWordConstExpr
392 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
393 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
394 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
395 | QWordConst {}
396 ;
397
398 ConstTerm
399 : ConstExprTerm {}
400 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
401 ;
402
403 ConstExprTerm
404 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
405 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
406 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
407 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
408 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
409 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
410 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
411 ;
412
413 Integer
414 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
415 ;
416
417 String
418 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
419 ;
420
421
422 /*******************************************************************************
423 *
424 * ASL Opcode Terms
425 *
426 ******************************************************************************/
427
428 CompilerDirective
429 : IncludeTerm {}
430 | IncludeEndTerm {}
431 | ExternalTerm {}
432 ;
433
434 NamedObject
435 : BankFieldTerm {}
436 | CreateBitFieldTerm {}
437 | CreateByteFieldTerm {}
438 | CreateDWordFieldTerm {}
439 | CreateFieldTerm {}
440 | CreateQWordFieldTerm {}
441 | CreateWordFieldTerm {}
442 | DataRegionTerm {}
443 | DeviceTerm {}
444 | EventTerm {}
445 | FieldTerm {}
446 | FunctionTerm {}
447 | IndexFieldTerm {}
448 | MethodTerm {}
449 | MutexTerm {}
450 | OpRegionTerm {}
451 | PowerResTerm {}
452 | ProcessorTerm {}
453 | ThermalZoneTerm {}
454 ;
455
456 NameSpaceModifier
457 : AliasTerm {}
458 | NameTerm {}
459 | ScopeTerm {}
460 ;
461
462 /* For ObjectType: SuperName except for MethodInvocationTerm */
463
464 ObjectTypeName
465 : NameString {}
466 | ArgTerm {}
467 | LocalTerm {}
468 | DebugTerm {}
469 | RefOfTerm {}
470 | DerefOfTerm {}
471 | IndexTerm {}
472
473 /* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
474 ;
475
476 RequiredTarget
477 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
478 ;
479
480 SimpleTarget
481 : NameString {}
482 | LocalTerm {}
483 | ArgTerm {}
484 ;
485
486 /* Opcode types */
487
488 Type1Opcode
489 : BreakTerm {}
490 | BreakPointTerm {}
491 | ContinueTerm {}
492 | FatalTerm {}
493 | ElseIfTerm {}
494 | LoadTerm {}
495 | NoOpTerm {}
496 | NotifyTerm {}
497 | ReleaseTerm {}
498 | ResetTerm {}
499 | ReturnTerm {}
500 | SignalTerm {}
501 | SleepTerm {}
502 | StallTerm {}
503 | SwitchTerm {}
504 | UnloadTerm {}
505 | WhileTerm {}
506 ;
507
508 Type2Opcode
509 : AcquireTerm {}
510 | CondRefOfTerm {}
511 | CopyObjectTerm {}
512 | DerefOfTerm {}
513 | ObjectTypeTerm {}
514 | RefOfTerm {}
515 | SizeOfTerm {}
516 | StoreTerm {}
517 | EqualsTerm {}
518 | TimerTerm {}
519 | WaitTerm {}
520 | MethodInvocationTerm {}
521 ;
522
523 /*
524 * Type 3/4/5 opcodes
525 */
526 Type2IntegerOpcode /* "Type3" opcodes */
527 : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
528 | AddTerm {}
529 | AndTerm {}
530 | DecTerm {}
531 | DivideTerm {}
532 | FindSetLeftBitTerm {}
533 | FindSetRightBitTerm {}
534 | FromBCDTerm {}
535 | IncTerm {}
536 | IndexTerm {}
537 | LAndTerm {}
538 | LEqualTerm {}
539 | LGreaterTerm {}
540 | LGreaterEqualTerm {}
541 | LLessTerm {}
542 | LLessEqualTerm {}
543 | LNotTerm {}
544 | LNotEqualTerm {}
545 | LoadTableTerm {}
546 | LOrTerm {}
547 | MatchTerm {}
548 | ModTerm {}
549 | MultiplyTerm {}
550 | NAndTerm {}
551 | NOrTerm {}
552 | NotTerm {}
553 | OrTerm {}
554 | ShiftLeftTerm {}
555 | ShiftRightTerm {}
556 | SubtractTerm {}
557 | ToBCDTerm {}
558 | ToIntegerTerm {}
559 | XOrTerm {}
560 ;
561
562 Type2StringOpcode /* "Type4" Opcodes */
563 : ToDecimalStringTerm {}
564 | ToHexStringTerm {}
565 | ToStringTerm {}
566 ;
567
568 Type2BufferOpcode /* "Type5" Opcodes */
569 : ToBufferTerm {}
570 | ConcatResTerm {}
571 ;
572
573 Type2BufferOrStringOpcode
574 : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
575 | PrintfTerm {}
576 | FprintfTerm {}
577 | MidTerm {}
578 ;
579
580 /*
581 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
582 */
583 Type3Opcode
584 : EISAIDTerm {}
585 ;
586
587 /* Obsolete
588 Type4Opcode
589 : ConcatTerm {}
590 | ToDecimalStringTerm {}
591 | ToHexStringTerm {}
592 | MidTerm {}
593 | ToStringTerm {}
594 ;
595 */
596
597 Type5Opcode
598 : ResourceTemplateTerm {}
599 | UnicodeTerm {}
600 | ToPLDTerm {}
601 | ToUUIDTerm {}
602 ;
603
604 Type6Opcode
605 : RefOfTerm {}
606 | DerefOfTerm {}
607 | IndexTerm {}
608 | IndexExpTerm {}
609 | MethodInvocationTerm {}
610 ;
611
612
613 /*******************************************************************************
614 *
615 * ASL Primary Terms
616 *
617 ******************************************************************************/
618
619 AccessAsTerm
620 : PARSEOP_ACCESSAS '('
621 AccessTypeKeyword
622 OptionalAccessAttribTerm
623 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
624 | PARSEOP_ACCESSAS '('
625 error ')' {$$ = AslDoError(); yyclearin;}
626 ;
627
628 AcquireTerm
629 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
630 SuperName
631 ',' WordConstExpr
632 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
633 | PARSEOP_ACQUIRE '('
634 error ')' {$$ = AslDoError(); yyclearin;}
635 ;
636
637 AddTerm
638 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
639 TermArg
640 TermArgItem
641 Target
642 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
643 | PARSEOP_ADD '('
644 error ')' {$$ = AslDoError(); yyclearin;}
645 ;
646
647 AliasTerm
648 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
649 NameString
650 NameStringItem
651 ')' {$$ = TrLinkChildren ($<n>3,2,$4,
652 TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
653 | PARSEOP_ALIAS '('
654 error ')' {$$ = AslDoError(); yyclearin;}
655 ;
656
657 AndTerm
658 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
659 TermArg
660 TermArgItem
661 Target
662 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
663 | PARSEOP_AND '('
664 error ')' {$$ = AslDoError(); yyclearin;}
665 ;
666
667 ArgTerm
668 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
669 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
670 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
671 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
672 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
673 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
674 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
675 ;
676
677 BankFieldTerm
678 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
679 NameString
680 NameStringItem
681 TermArgItem
682 ',' AccessTypeKeyword
683 ',' LockRuleKeyword
684 ',' UpdateRuleKeyword
685 ')' '{'
686 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
687 | PARSEOP_BANKFIELD '('
688 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
689 ;
690
691 BreakTerm
692 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
693 ;
694
695 BreakPointTerm
696 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
697 ;
698
699 BufferTerm
700 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
701 OptionalTermArg
702 ')' '{'
703 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
704 | PARSEOP_BUFFER '('
705 error ')' {$$ = AslDoError(); yyclearin;}
706 ;
707
708 BufferTermData
709 : ByteList {}
710 | StringData {}
711 ;
712
713 CaseTerm
714 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
715 DataObject
716 ')' '{'
717 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
718 | PARSEOP_CASE '('
719 error ')' {$$ = AslDoError(); yyclearin;}
720 ;
721
722 ConcatTerm
723 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
724 TermArg
725 TermArgItem
726 Target
727 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
728 | PARSEOP_CONCATENATE '('
729 error ')' {$$ = AslDoError(); yyclearin;}
730 ;
731
732 ConcatResTerm
733 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
734 TermArg
735 TermArgItem
736 Target
737 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
738 | PARSEOP_CONCATENATERESTEMPLATE '('
739 error ')' {$$ = AslDoError(); yyclearin;}
740 ;
741
742 ConnectionTerm
743 : PARSEOP_CONNECTION '('
744 NameString
745 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
746 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
747 ResourceMacroTerm
748 ')' {$$ = TrLinkChildren ($<n>3, 1,
749 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
750 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
751 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
752 $4));}
753 | PARSEOP_CONNECTION '('
754 error ')' {$$ = AslDoError(); yyclearin;}
755 ;
756
757 CondRefOfTerm
758 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
759 SuperName
760 Target
761 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
762 | PARSEOP_CONDREFOF '('
763 error ')' {$$ = AslDoError(); yyclearin;}
764 ;
765
766 ContinueTerm
767 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
768 ;
769
770 CopyObjectTerm
771 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
772 TermArg
773 ',' SimpleTarget
774 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
775 | PARSEOP_COPYOBJECT '('
776 error ')' {$$ = AslDoError(); yyclearin;}
777 ;
778
779 CreateBitFieldTerm
780 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
781 TermArg
782 TermArgItem
783 NameStringItem
784 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
785 | PARSEOP_CREATEBITFIELD '('
786 error ')' {$$ = AslDoError(); yyclearin;}
787 ;
788
789 CreateByteFieldTerm
790 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
791 TermArg
792 TermArgItem
793 NameStringItem
794 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
795 | PARSEOP_CREATEBYTEFIELD '('
796 error ')' {$$ = AslDoError(); yyclearin;}
797 ;
798
799 CreateDWordFieldTerm
800 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
801 TermArg
802 TermArgItem
803 NameStringItem
804 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
805 | PARSEOP_CREATEDWORDFIELD '('
806 error ')' {$$ = AslDoError(); yyclearin;}
807 ;
808
809 CreateFieldTerm
810 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
811 TermArg
812 TermArgItem
813 TermArgItem
814 NameStringItem
815 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
816 | PARSEOP_CREATEFIELD '('
817 error ')' {$$ = AslDoError(); yyclearin;}
818 ;
819
820 CreateQWordFieldTerm
821 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
822 TermArg
823 TermArgItem
824 NameStringItem
825 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
826 | PARSEOP_CREATEQWORDFIELD '('
827 error ')' {$$ = AslDoError(); yyclearin;}
828 ;
829
830 CreateWordFieldTerm
831 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
832 TermArg
833 TermArgItem
834 NameStringItem
835 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
836 | PARSEOP_CREATEWORDFIELD '('
837 error ')' {$$ = AslDoError(); yyclearin;}
838 ;
839
840 DataRegionTerm
841 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
842 NameString
843 TermArgItem
844 TermArgItem
845 TermArgItem
846 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
847 | PARSEOP_DATATABLEREGION '('
848 error ')' {$$ = AslDoError(); yyclearin;}
849 ;
850
851 DebugTerm
852 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
853 ;
854
855 DecTerm
856 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
857 SuperName
858 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
859 | PARSEOP_DECREMENT '('
860 error ')' {$$ = AslDoError(); yyclearin;}
861 ;
862
863 DefaultTerm
864 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
865 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
866 | PARSEOP_DEFAULT '{'
867 error '}' {$$ = AslDoError(); yyclearin;}
868 ;
869
870 DerefOfTerm
871 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
872 TermArg
873 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
874 | PARSEOP_DEREFOF '('
875 error ')' {$$ = AslDoError(); yyclearin;}
876 ;
877
878 DeviceTerm
879 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
880 NameString
881 ')' '{'
882 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
883 | PARSEOP_DEVICE '('
884 error ')' {$$ = AslDoError(); yyclearin;}
885 ;
886
887 DivideTerm
888 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
889 TermArg
890 TermArgItem
891 Target
892 Target
893 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
894 | PARSEOP_DIVIDE '('
895 error ')' {$$ = AslDoError(); yyclearin;}
896 ;
897
898 EISAIDTerm
899 : PARSEOP_EISAID '('
900 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
901 | PARSEOP_EISAID '('
902 error ')' {$$ = AslDoError(); yyclearin;}
903 ;
904
905 ElseIfTerm
906 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
907 ;
908
909 ElseTerm
910 : {$$ = NULL;}
911 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
912 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
913
914 | PARSEOP_ELSE '{'
915 error '}' {$$ = AslDoError(); yyclearin;}
916
917 | PARSEOP_ELSE
918 error {$$ = AslDoError(); yyclearin;}
919
920 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
921 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
922 ')' '{'
923 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
924 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
925 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
926
927 | PARSEOP_ELSEIF '('
928 error ')' {$$ = AslDoError(); yyclearin;}
929
930 | PARSEOP_ELSEIF
931 error {$$ = AslDoError(); yyclearin;}
932 ;
933
934 EventTerm
935 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
936 NameString
937 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
938 | PARSEOP_EVENT '('
939 error ')' {$$ = AslDoError(); yyclearin;}
940 ;
941
942 ExternalTerm
943 : PARSEOP_EXTERNAL '('
944 NameString
945 OptionalObjectTypeKeyword
946 OptionalParameterTypePackage
947 OptionalParameterTypesPackage
948 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
949 | PARSEOP_EXTERNAL '('
950 error ')' {$$ = AslDoError(); yyclearin;}
951 ;
952
953 FatalTerm
954 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
955 ByteConstExpr
956 ',' DWordConstExpr
957 TermArgItem
958 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
959 | PARSEOP_FATAL '('
960 error ')' {$$ = AslDoError(); yyclearin;}
961 ;
962
963 FieldTerm
964 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
965 NameString
966 ',' AccessTypeKeyword
967 ',' LockRuleKeyword
968 ',' UpdateRuleKeyword
969 ')' '{'
970 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
971 | PARSEOP_FIELD '('
972 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
973 ;
974
975 FindSetLeftBitTerm
976 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
977 TermArg
978 Target
979 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
980 | PARSEOP_FINDSETLEFTBIT '('
981 error ')' {$$ = AslDoError(); yyclearin;}
982 ;
983
984 FindSetRightBitTerm
985 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
986 TermArg
987 Target
988 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
989 | PARSEOP_FINDSETRIGHTBIT '('
990 error ')' {$$ = AslDoError(); yyclearin;}
991 ;
992
993 FprintfTerm
994 : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
995 TermArg ','
996 StringData
997 PrintfArgList
998 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
999 | PARSEOP_FPRINTF '('
1000 error ')' {$$ = AslDoError(); yyclearin;}
1001 ;
1002
1003 FromBCDTerm
1004 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1005 TermArg
1006 Target
1007 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1008 | PARSEOP_FROMBCD '('
1009 error ')' {$$ = AslDoError(); yyclearin;}
1010 ;
1011
1012 FunctionTerm
1013 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1014 NameString
1015 OptionalParameterTypePackage
1016 OptionalParameterTypesPackage
1017 ')' '{'
1018 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1019 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1020 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1021 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1022 | PARSEOP_FUNCTION '('
1023 error ')' {$$ = AslDoError(); yyclearin;}
1024 ;
1025
1026 IfTerm
1027 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1028 TermArg
1029 ')' '{'
1030 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1031
1032 | PARSEOP_IF '('
1033 error ')' {$$ = AslDoError(); yyclearin;}
1034 ;
1035
1036 IncludeTerm
1037 : PARSEOP_INCLUDE '('
1038 String ')' {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
1039 FlOpenIncludeFile ($3);}
1040 ;
1041
1042 IncludeEndTerm
1043 : PARSEOP_INCLUDE_END {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
1044 ;
1045
1046 IncTerm
1047 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1048 SuperName
1049 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1050 | PARSEOP_INCREMENT '('
1051 error ')' {$$ = AslDoError(); yyclearin;}
1052 ;
1053
1054 IndexFieldTerm
1055 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1056 NameString
1057 NameStringItem
1058 ',' AccessTypeKeyword
1059 ',' LockRuleKeyword
1060 ',' UpdateRuleKeyword
1061 ')' '{'
1062 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1063 | PARSEOP_INDEXFIELD '('
1064 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1065 ;
1066
1067 IndexTerm
1068 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1069 TermArg
1070 TermArgItem
1071 Target
1072 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1073 | PARSEOP_INDEX '('
1074 error ')' {$$ = AslDoError(); yyclearin;}
1075 ;
1076
1077 LAndTerm
1078 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1079 TermArg
1080 TermArgItem
1081 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1082 | PARSEOP_LAND '('
1083 error ')' {$$ = AslDoError(); yyclearin;}
1084 ;
1085
1086 LEqualTerm
1087 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1088 TermArg
1089 TermArgItem
1090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1091 | PARSEOP_LEQUAL '('
1092 error ')' {$$ = AslDoError(); yyclearin;}
1093 ;
1094
1095 LGreaterEqualTerm
1096 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1097 TermArg
1098 TermArgItem
1099 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1100 | PARSEOP_LGREATEREQUAL '('
1101 error ')' {$$ = AslDoError(); yyclearin;}
1102 ;
1103
1104 LGreaterTerm
1105 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1106 TermArg
1107 TermArgItem
1108 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1109 | PARSEOP_LGREATER '('
1110 error ')' {$$ = AslDoError(); yyclearin;}
1111 ;
1112
1113 LLessEqualTerm
1114 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1115 TermArg
1116 TermArgItem
1117 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1118 | PARSEOP_LLESSEQUAL '('
1119 error ')' {$$ = AslDoError(); yyclearin;}
1120 ;
1121
1122 LLessTerm
1123 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1124 TermArg
1125 TermArgItem
1126 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1127 | PARSEOP_LLESS '('
1128 error ')' {$$ = AslDoError(); yyclearin;}
1129 ;
1130
1131 LNotEqualTerm
1132 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1133 TermArg
1134 TermArgItem
1135 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1136 | PARSEOP_LNOTEQUAL '('
1137 error ')' {$$ = AslDoError(); yyclearin;}
1138 ;
1139
1140 LNotTerm
1141 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1142 TermArg
1143 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1144 | PARSEOP_LNOT '('
1145 error ')' {$$ = AslDoError(); yyclearin;}
1146 ;
1147
1148 LoadTableTerm
1149 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1150 TermArg
1151 TermArgItem
1152 TermArgItem
1153 OptionalListString
1154 OptionalListString
1155 OptionalReference
1156 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1157 | PARSEOP_LOADTABLE '('
1158 error ')' {$$ = AslDoError(); yyclearin;}
1159 ;
1160
1161 LoadTerm
1162 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1163 NameString
1164 RequiredTarget
1165 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1166 | PARSEOP_LOAD '('
1167 error ')' {$$ = AslDoError(); yyclearin;}
1168 ;
1169
1170 LocalTerm
1171 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
1172 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
1173 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
1174 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
1175 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
1176 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
1177 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
1178 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
1179 ;
1180
1181 LOrTerm
1182 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1183 TermArg
1184 TermArgItem
1185 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1186 | PARSEOP_LOR '('
1187 error ')' {$$ = AslDoError(); yyclearin;}
1188 ;
1189
1190 MatchTerm
1191 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1192 TermArg
1193 ',' MatchOpKeyword
1194 TermArgItem
1195 ',' MatchOpKeyword
1196 TermArgItem
1197 TermArgItem
1198 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1199 | PARSEOP_MATCH '('
1200 error ')' {$$ = AslDoError(); yyclearin;}
1201 ;
1202
1203 MethodTerm
1204 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1205 NameString
1206 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1207 OptionalSerializeRuleKeyword
1208 OptionalByteConstExpr
1209 OptionalParameterTypePackage
1210 OptionalParameterTypesPackage
1211 ')' '{'
1212 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1213 | PARSEOP_METHOD '('
1214 error ')' {$$ = AslDoError(); yyclearin;}
1215 ;
1216
1217 MidTerm
1218 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1219 TermArg
1220 TermArgItem
1221 TermArgItem
1222 Target
1223 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1224 | PARSEOP_MID '('
1225 error ')' {$$ = AslDoError(); yyclearin;}
1226 ;
1227
1228 ModTerm
1229 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1230 TermArg
1231 TermArgItem
1232 Target
1233 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1234 | PARSEOP_MOD '('
1235 error ')' {$$ = AslDoError(); yyclearin;}
1236 ;
1237
1238 MultiplyTerm
1239 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1240 TermArg
1241 TermArgItem
1242 Target
1243 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1244 | PARSEOP_MULTIPLY '('
1245 error ')' {$$ = AslDoError(); yyclearin;}
1246 ;
1247
1248 MutexTerm
1249 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1250 NameString
1251 ',' ByteConstExpr
1252 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1253 | PARSEOP_MUTEX '('
1254 error ')' {$$ = AslDoError(); yyclearin;}
1255 ;
1256
1257 NameTerm
1258 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1259 NameString
1260 ',' DataObject
1261 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1262 | PARSEOP_NAME '('
1263 error ')' {$$ = AslDoError(); yyclearin;}
1264 ;
1265
1266 NAndTerm
1267 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1268 TermArg
1269 TermArgItem
1270 Target
1271 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1272 | PARSEOP_NAND '('
1273 error ')' {$$ = AslDoError(); yyclearin;}
1274 ;
1275
1276 NoOpTerm
1277 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1278 ;
1279
1280 NOrTerm
1281 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1282 TermArg
1283 TermArgItem
1284 Target
1285 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1286 | PARSEOP_NOR '('
1287 error ')' {$$ = AslDoError(); yyclearin;}
1288 ;
1289
1290 NotifyTerm
1291 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1292 SuperName
1293 TermArgItem
1294 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1295 | PARSEOP_NOTIFY '('
1296 error ')' {$$ = AslDoError(); yyclearin;}
1297 ;
1298
1299 NotTerm
1300 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1301 TermArg
1302 Target
1303 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1304 | PARSEOP_NOT '('
1305 error ')' {$$ = AslDoError(); yyclearin;}
1306 ;
1307
1308 ObjectTypeTerm
1309 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1310 ObjectTypeName
1311 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1312 | PARSEOP_OBJECTTYPE '('
1313 error ')' {$$ = AslDoError(); yyclearin;}
1314 ;
1315
1316 OffsetTerm
1317 : PARSEOP_OFFSET '('
1318 AmlPackageLengthTerm
1319 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1320 | PARSEOP_OFFSET '('
1321 error ')' {$$ = AslDoError(); yyclearin;}
1322 ;
1323
1324 OpRegionTerm
1325 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1326 NameString
1327 ',' OpRegionSpaceIdTerm
1328 TermArgItem
1329 TermArgItem
1330 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1331 | PARSEOP_OPERATIONREGION '('
1332 error ')' {$$ = AslDoError(); yyclearin;}
1333 ;
1334
1335 OpRegionSpaceIdTerm
1336 : RegionSpaceKeyword {}
1337 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1338 ;
1339
1340 OrTerm
1341 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1342 TermArg
1343 TermArgItem
1344 Target
1345 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1346 | PARSEOP_OR '('
1347 error ')' {$$ = AslDoError(); yyclearin;}
1348 ;
1349
1350 PackageTerm
1351 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
1352 VarPackageLengthTerm
1353 ')' '{'
1354 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1355 | PARSEOP_PACKAGE '('
1356 error ')' {$$ = AslDoError(); yyclearin;}
1357 ;
1358
1359 PowerResTerm
1360 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1361 NameString
1362 ',' ByteConstExpr
1363 ',' WordConstExpr
1364 ')' '{'
1365 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1366 | PARSEOP_POWERRESOURCE '('
1367 error ')' {$$ = AslDoError(); yyclearin;}
1368 ;
1369
1370 PrintfTerm
1371 : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
1372 StringData
1373 PrintfArgList
1374 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1375 | PARSEOP_PRINTF '('
1376 error ')' {$$ = AslDoError(); yyclearin;}
1377 ;
1378
1379 PrintfArgList
1380 : {$$ = NULL;}
1381 | TermArg {$$ = $1;}
1382 | PrintfArgList ','
1383 TermArg {$$ = TrLinkPeerNode ($1, $3);}
1384 ;
1385
1386 ProcessorTerm
1387 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1388 NameString
1389 ',' ByteConstExpr
1390 OptionalDWordConstExpr
1391 OptionalByteConstExpr
1392 ')' '{'
1393 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1394 | PARSEOP_PROCESSOR '('
1395 error ')' {$$ = AslDoError(); yyclearin;}
1396 ;
1397
1398 RawDataBufferTerm
1399 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
1400 OptionalWordConst
1401 ')' '{'
1402 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1403 | PARSEOP_DATABUFFER '('
1404 error ')' {$$ = AslDoError(); yyclearin;}
1405 ;
1406
1407 /*
1408 * In RefOf, the node isn't really a target, but we can't keep track of it after
1409 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1410 */
1411 RefOfTerm
1412 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1413 SuperName
1414 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1415 | PARSEOP_REFOF '('
1416 error ')' {$$ = AslDoError(); yyclearin;}
1417 ;
1418
1419 ReleaseTerm
1420 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1421 SuperName
1422 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1423 | PARSEOP_RELEASE '('
1424 error ')' {$$ = AslDoError(); yyclearin;}
1425 ;
1426
1427 ResetTerm
1428 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1429 SuperName
1430 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1431 | PARSEOP_RESET '('
1432 error ')' {$$ = AslDoError(); yyclearin;}
1433 ;
1434
1435 ReturnTerm
1436 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1437 OptionalReturnArg
1438 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1439 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1440 | PARSEOP_RETURN '('
1441 error ')' {$$ = AslDoError(); yyclearin;}
1442 ;
1443
1444 ScopeTerm
1445 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1446 NameString
1447 ')' '{'
1448 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1449 | PARSEOP_SCOPE '('
1450 error ')' {$$ = AslDoError(); yyclearin;}
1451 ;
1452
1453 ShiftLeftTerm
1454 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1455 TermArg
1456 TermArgItem
1457 Target
1458 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1459 | PARSEOP_SHIFTLEFT '('
1460 error ')' {$$ = AslDoError(); yyclearin;}
1461 ;
1462
1463 ShiftRightTerm
1464 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1465 TermArg
1466 TermArgItem
1467 Target
1468 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1469 | PARSEOP_SHIFTRIGHT '('
1470 error ')' {$$ = AslDoError(); yyclearin;}
1471 ;
1472
1473 SignalTerm
1474 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1475 SuperName
1476 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1477 | PARSEOP_SIGNAL '('
1478 error ')' {$$ = AslDoError(); yyclearin;}
1479 ;
1480
1481 SizeOfTerm
1482 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1483 SuperName
1484 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1485 | PARSEOP_SIZEOF '('
1486 error ')' {$$ = AslDoError(); yyclearin;}
1487 ;
1488
1489 SleepTerm
1490 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1491 TermArg
1492 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1493 | PARSEOP_SLEEP '('
1494 error ')' {$$ = AslDoError(); yyclearin;}
1495 ;
1496
1497 StallTerm
1498 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1499 TermArg
1500 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1501 | PARSEOP_STALL '('
1502 error ')' {$$ = AslDoError(); yyclearin;}
1503 ;
1504
1505 StoreTerm
1506 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1507 TermArg
1508 ',' SuperName
1509 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1510 | PARSEOP_STORE '('
1511 error ')' {$$ = AslDoError(); yyclearin;}
1512 ;
1513
1514 SubtractTerm
1515 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1516 TermArg
1517 TermArgItem
1518 Target
1519 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1520 | PARSEOP_SUBTRACT '('
1521 error ')' {$$ = AslDoError(); yyclearin;}
1522 ;
1523 SwitchTerm
1524 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1525 TermArg
1526 ')' '{'
1527 CaseDefaultTermList '}'
1528 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1529 | PARSEOP_SWITCH '('
1530 error ')' {$$ = AslDoError(); yyclearin;}
1531 ;
1532
1533 ThermalZoneTerm
1534 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1535 NameString
1536 ')' '{'
1537 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1538 | PARSEOP_THERMALZONE '('
1539 error ')' {$$ = AslDoError(); yyclearin;}
1540 ;
1541
1542 TimerTerm
1543 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1544 ')' {$$ = TrLinkChildren ($<n>3,0);}
1545 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1546 | PARSEOP_TIMER '('
1547 error ')' {$$ = AslDoError(); yyclearin;}
1548 ;
1549
1550 ToBCDTerm
1551 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1552 TermArg
1553 Target
1554 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1555 | PARSEOP_TOBCD '('
1556 error ')' {$$ = AslDoError(); yyclearin;}
1557 ;
1558
1559 ToBufferTerm
1560 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1561 TermArg
1562 Target
1563 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1564 | PARSEOP_TOBUFFER '('
1565 error ')' {$$ = AslDoError(); yyclearin;}
1566 ;
1567
1568 ToDecimalStringTerm
1569 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1570 TermArg
1571 Target
1572 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1573 | PARSEOP_TODECIMALSTRING '('
1574 error ')' {$$ = AslDoError(); yyclearin;}
1575 ;
1576
1577 ToHexStringTerm
1578 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
1579 TermArg
1580 Target
1581 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1582 | PARSEOP_TOHEXSTRING '('
1583 error ')' {$$ = AslDoError(); yyclearin;}
1584 ;
1585
1586 ToIntegerTerm
1587 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
1588 TermArg
1589 Target
1590 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1591 | PARSEOP_TOINTEGER '('
1592 error ')' {$$ = AslDoError(); yyclearin;}
1593 ;
1594
1595 ToPLDTerm
1596 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
1597 PldKeywordList
1598 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1599 | PARSEOP_TOPLD '('
1600 error ')' {$$ = AslDoError(); yyclearin;}
1601 ;
1602
1603 PldKeywordList
1604 : {$$ = NULL;}
1605 | PldKeyword
1606 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);}
1607 | PldKeyword
1608 PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);}
1609 | PldKeywordList ',' /* Allows a trailing comma at list end */
1610 | PldKeywordList ','
1611 PldKeyword
1612 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1613 | PldKeywordList ','
1614 PldKeyword
1615 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
1616 ;
1617
1618
1619 ToStringTerm
1620 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
1621 TermArg
1622 OptionalCount
1623 Target
1624 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1625 | PARSEOP_TOSTRING '('
1626 error ')' {$$ = AslDoError(); yyclearin;}
1627 ;
1628
1629 ToUUIDTerm
1630 : PARSEOP_TOUUID '('
1631 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
1632 | PARSEOP_TOUUID '('
1633 error ')' {$$ = AslDoError(); yyclearin;}
1634 ;
1635
1636 UnicodeTerm
1637 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
1638 StringData
1639 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
1640 | PARSEOP_UNICODE '('
1641 error ')' {$$ = AslDoError(); yyclearin;}
1642 ;
1643
1644 UnloadTerm
1645 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1646 SuperName
1647 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1648 | PARSEOP_UNLOAD '('
1649 error ')' {$$ = AslDoError(); yyclearin;}
1650 ;
1651
1652 WaitTerm
1653 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
1654 SuperName
1655 TermArgItem
1656 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1657 | PARSEOP_WAIT '('
1658 error ')' {$$ = AslDoError(); yyclearin;}
1659 ;
1660
1661 XOrTerm
1662 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
1663 TermArg
1664 TermArgItem
1665 Target
1666 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1667 | PARSEOP_XOR '('
1668 error ')' {$$ = AslDoError(); yyclearin;}
1669 ;
1670
1671 WhileTerm
1672 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1673 TermArg
1674 ')' '{' TermList '}'
1675 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1676 | PARSEOP_WHILE '('
1677 error ')' {$$ = AslDoError(); yyclearin;}
1678 ;
1679
1680
1681 /*******************************************************************************
1682 *
1683 * ASL Helper Terms
1684 *
1685 ******************************************************************************/
1686
1687 AmlPackageLengthTerm
1688 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
1689 ;
1690
1691 NameStringItem
1692 : ',' NameString {$$ = $2;}
1693 | ',' error {$$ = AslDoError (); yyclearin;}
1694 ;
1695
1696 TermArgItem
1697 : ',' TermArg {$$ = $2;}
1698 | ',' error {$$ = AslDoError (); yyclearin;}
1699 ;
1700
1701 OptionalReference
1702 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
1703 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
1704 | ',' TermArg {$$ = $2;}
1705 ;
1706
1707 OptionalReturnArg
1708 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
1709 | TermArg {$$ = $1;}
1710 ;
1711
1712 OptionalSerializeRuleKeyword
1713 : {$$ = NULL;}
1714 | ',' {$$ = NULL;}
1715 | ',' SerializeRuleKeyword {$$ = $2;}
1716 ;
1717
1718 OptionalTermArg
1719 : {$$ = NULL;}
1720 | TermArg {$$ = $1;}
1721 ;
1722
1723 OptionalWordConst
1724 : {$$ = NULL;}
1725 | WordConst {$$ = $1;}
1726 ;
1727