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