1 NoEcho(' 2 /****************************************************************************** 3 * 4 * Module Name: aslrules.y - Bison/Yacc production rules 5 * 6 *****************************************************************************/ 7 8 /* 9 * Copyright (C) 2000 - 2015, 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 * Production rules start here 50 * 51 ******************************************************************************/ 52 53 /* 54 * ASL Names 55 * 56 * Root rule. Allow multiple #line directives before the definition block 57 * to handle output from preprocessors 58 */ 59 ASLCode 60 : DefinitionBlockTerm 61 | error {YYABORT; $$ = NULL;} 62 ; 63 64 /* 65 * Blocks, Data, and Opcodes 66 */ 67 68 /* 69 * Note concerning support for "module-level code". 70 * 71 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control 72 * methods (the so-called module-level code.) This support was explicitly 73 * removed in ACPI 2.0, but this type of code continues to be created by 74 * BIOS vendors. In order to support the disassembly and recompilation of 75 * such code (and the porting of ASL code to iASL), iASL supports this 76 * code in violation of the current ACPI specification. 77 * 78 * The grammar change to support module-level code is to revert the 79 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the 80 * original use of {TermList} instead (see below.) This allows the use 81 * of Type1 and Type2 opcodes at module level. 82 */ 83 DefinitionBlockTerm 84 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);} 85 String ',' 86 String ',' 87 ByteConst ',' 88 String ',' 89 String ',' 90 DWordConst 91 ')' {TrSetEndLineNumber ($<n>3);} 92 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);} 93 ; 94 95 /* 96 * ASL Extensions: C-style math/logical operators and expressions. 97 * The implementation transforms these operators into the standard 98 * AML opcodes and syntax. 99 * 100 * Supported operators and precedence rules (high-to-low) 101 * 102 * NOTE: The operator precedence and associativity rules are 103 * implemented by the tokens in asltokens.y 104 * 105 * (left-to-right): 106 * 1) ( ) expr++ expr-- 107 * 108 * (right-to-left): 109 * 2) ! ~ 110 * 111 * (left-to-right): 112 * 3) * / % 113 * 4) + - 114 * 5) >> << 115 * 6) < > <= >= 116 * 7) == != 117 * 8) & 118 * 9) ^ 119 * 10) | 120 * 11) && 121 * 12) || 122 * 123 * (right-to-left): 124 * 13) = += -= *= /= %= <<= >>= &= ^= |= 125 */ 126 Expression 127 128 /* Unary operators */ 129 130 : PARSEOP_EXP_LOGICAL_NOT {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 131 TermArg {$$ = TrLinkChildren ($<n>2,1,$3);} 132 | PARSEOP_EXP_NOT {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);} 133 TermArg {$$ = TrLinkChildren ($<n>2,2,$3,TrCreateNullTarget ());} 134 135 | SuperName PARSEOP_EXP_INCREMENT {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 136 {$$ = TrLinkChildren ($<n>3,1,$1);} 137 | SuperName PARSEOP_EXP_DECREMENT {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 138 {$$ = TrLinkChildren ($<n>3,1,$1);} 139 140 /* Binary operators: math and logical */ 141 142 | TermArg PARSEOP_EXP_ADD {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);} 143 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 144 | TermArg PARSEOP_EXP_DIVIDE {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);} 145 TermArg {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateNullTarget (), 146 TrCreateNullTarget ());} 147 | TermArg PARSEOP_EXP_MODULO {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);} 148 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 149 | TermArg PARSEOP_EXP_MULTIPLY {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} 150 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 151 | TermArg PARSEOP_EXP_SHIFT_LEFT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} 152 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 153 | TermArg PARSEOP_EXP_SHIFT_RIGHT {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} 154 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 155 | TermArg PARSEOP_EXP_SUBTRACT {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} 156 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 157 158 | TermArg PARSEOP_EXP_AND {$<n>$ = TrCreateLeafNode (PARSEOP_AND);} 159 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 160 | TermArg PARSEOP_EXP_OR {$<n>$ = TrCreateLeafNode (PARSEOP_OR);} 161 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 162 | TermArg PARSEOP_EXP_XOR {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);} 163 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4,TrCreateNullTarget ());} 164 165 | TermArg PARSEOP_EXP_GREATER {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 166 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 167 | TermArg PARSEOP_EXP_GREATER_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATEREQUAL);} 168 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 169 | TermArg PARSEOP_EXP_LESS {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 170 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 171 | TermArg PARSEOP_EXP_LESS_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LLESSEQUAL);} 172 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 173 174 | TermArg PARSEOP_EXP_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 175 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 176 | TermArg PARSEOP_EXP_NOT_EQUAL {$<n>$ = TrCreateLeafNode (PARSEOP_LNOTEQUAL);} 177 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 178 179 | TermArg PARSEOP_EXP_LOGICAL_AND {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);} 180 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 181 | TermArg PARSEOP_EXP_LOGICAL_OR {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);} 182 TermArg {$$ = TrLinkChildren ($<n>3,2,$1,$4);} 183 184 /* Parentheses */ 185 186 | '(' TermArg ')' { $$ = $2;} 187 ; 188 189 EqualsTerm 190 191 /* All assignment-type operations */ 192 193 : SuperName PARSEOP_EXP_EQUALS 194 TermArg {$$ = TrCreateAssignmentNode ($1, $3);} 195 196 | TermArg PARSEOP_EXP_ADD_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);} 197 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 198 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 199 200 | TermArg PARSEOP_EXP_DIV_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);} 201 TermArg {$$ = TrLinkChildren ($<n>3,4,$1,$4,TrCreateNullTarget (), 202 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 203 204 | TermArg PARSEOP_EXP_MOD_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);} 205 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 206 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 207 208 | TermArg PARSEOP_EXP_MUL_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} 209 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 210 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 211 212 | TermArg PARSEOP_EXP_SHL_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} 213 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 214 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 215 216 | TermArg PARSEOP_EXP_SHR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} 217 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 218 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 219 220 | TermArg PARSEOP_EXP_SUB_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} 221 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 222 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 223 224 | TermArg PARSEOP_EXP_AND_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_AND);} 225 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 226 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 227 228 | TermArg PARSEOP_EXP_OR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_OR);} 229 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 230 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 231 232 | TermArg PARSEOP_EXP_XOR_EQ {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);} 233 TermArg {$$ = TrLinkChildren ($<n>3,3,$1,$4, 234 TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));} 235 ; 236 237 238 /* ACPI 3.0 -- allow semicolons between terms */ 239 240 TermList 241 : {$$ = NULL;} 242 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 243 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 244 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 245 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 246 ; 247 248 Term 249 : Object {} 250 | Type1Opcode {} 251 | Type2Opcode {} 252 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 253 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 254 | Type2BufferOpcode {} 255 | Type2BufferOrStringOpcode {} 256 | error {$$ = AslDoError(); yyclearin;} 257 ; 258 259 CompilerDirective 260 : IncludeTerm {} 261 | ExternalTerm {} 262 ; 263 264 ObjectList 265 : {$$ = NULL;} 266 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} 267 | error {$$ = AslDoError(); yyclearin;} 268 ; 269 270 Object 271 : CompilerDirective {} 272 | NamedObject {} 273 | NameSpaceModifier {} 274 ; 275 276 DataObject 277 : BufferData {} 278 | PackageData {} 279 | IntegerData {} 280 | StringData {} 281 ; 282 283 BufferData 284 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 285 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 286 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 287 | BufferTerm {} 288 ; 289 290 PackageData 291 : PackageTerm {} 292 ; 293 294 IntegerData 295 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 296 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 297 | Integer {} 298 | ConstTerm {} 299 ; 300 301 StringData 302 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 303 | String {} 304 ; 305 306 NamedObject 307 : BankFieldTerm {} 308 | CreateBitFieldTerm {} 309 | CreateByteFieldTerm {} 310 | CreateDWordFieldTerm {} 311 | CreateFieldTerm {} 312 | CreateQWordFieldTerm {} 313 | CreateWordFieldTerm {} 314 | DataRegionTerm {} 315 | DeviceTerm {} 316 | EventTerm {} 317 | FieldTerm {} 318 | FunctionTerm {} 319 | IndexFieldTerm {} 320 | MethodTerm {} 321 | MutexTerm {} 322 | OpRegionTerm {} 323 | PowerResTerm {} 324 | ProcessorTerm {} 325 | ThermalZoneTerm {} 326 ; 327 328 NameSpaceModifier 329 : AliasTerm {} 330 | NameTerm {} 331 | ScopeTerm {} 332 ; 333 334 MethodInvocationTerm 335 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} 336 ArgList ')' {$$ = TrLinkChildNode ($1,$4);} 337 ; 338 339 ArgList 340 : {$$ = NULL;} 341 | TermArg 342 | ArgList ',' /* Allows a trailing comma at list end */ 343 | ArgList ',' 344 TermArg {$$ = TrLinkPeerNode ($1,$3);} 345 ; 346 347 /* 348 Removed from TermArg due to reduce/reduce conflicts 349 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 350 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 351 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 352 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 353 354 */ 355 356 TermArg 357 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 358 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 359 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 360 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 361 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 362 ; 363 364 Target 365 : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 366 | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 367 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 368 ; 369 370 RequiredTarget 371 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 372 ; 373 374 SimpleTarget 375 : NameString {} 376 | LocalTerm {} 377 | ArgTerm {} 378 ; 379 380 /* Rules for specifying the type of one method argument or return value */ 381 382 ParameterTypePackage 383 : {$$ = NULL;} 384 | ObjectTypeKeyword {$$ = $1;} 385 | ParameterTypePackage ',' 386 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} 387 ; 388 389 ParameterTypePackageList 390 : {$$ = NULL;} 391 | ObjectTypeKeyword {$$ = $1;} 392 | '{' ParameterTypePackage '}' {$$ = $2;} 393 ; 394 395 OptionalParameterTypePackage 396 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 397 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 398 ; 399 400 /* Rules for specifying the types for method arguments */ 401 402 ParameterTypesPackage 403 : ParameterTypePackageList {$$ = $1;} 404 | ParameterTypesPackage ',' 405 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} 406 ; 407 408 ParameterTypesPackageList 409 : {$$ = NULL;} 410 | ObjectTypeKeyword {$$ = $1;} 411 | '{' ParameterTypesPackage '}' {$$ = $2;} 412 ; 413 414 OptionalParameterTypesPackage 415 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 416 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 417 ; 418 419 420 /* Opcode types */ 421 422 Type1Opcode 423 : BreakTerm {} 424 | BreakPointTerm {} 425 | ContinueTerm {} 426 | FatalTerm {} 427 | IfElseTerm {} 428 | LoadTerm {} 429 | NoOpTerm {} 430 | NotifyTerm {} 431 | ReleaseTerm {} 432 | ResetTerm {} 433 | ReturnTerm {} 434 | SignalTerm {} 435 | SleepTerm {} 436 | StallTerm {} 437 | SwitchTerm {} 438 | UnloadTerm {} 439 | WhileTerm {} 440 ; 441 442 Type2Opcode 443 : AcquireTerm {} 444 | CondRefOfTerm {} 445 | CopyObjectTerm {} 446 | DerefOfTerm {} 447 | ObjectTypeTerm {} 448 | RefOfTerm {} 449 | SizeOfTerm {} 450 | StoreTerm {} 451 | EqualsTerm {} 452 | TimerTerm {} 453 | WaitTerm {} 454 | MethodInvocationTerm {} 455 ; 456 457 /* 458 * Type 3/4/5 opcodes 459 */ 460 461 Type2IntegerOpcode /* "Type3" opcodes */ 462 : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 463 | AddTerm {} 464 | AndTerm {} 465 | DecTerm {} 466 | DivideTerm {} 467 | FindSetLeftBitTerm {} 468 | FindSetRightBitTerm {} 469 | FromBCDTerm {} 470 | IncTerm {} 471 | IndexTerm {} 472 | LAndTerm {} 473 | LEqualTerm {} 474 | LGreaterTerm {} 475 | LGreaterEqualTerm {} 476 | LLessTerm {} 477 | LLessEqualTerm {} 478 | LNotTerm {} 479 | LNotEqualTerm {} 480 | LoadTableTerm {} 481 | LOrTerm {} 482 | MatchTerm {} 483 | ModTerm {} 484 | MultiplyTerm {} 485 | NAndTerm {} 486 | NOrTerm {} 487 | NotTerm {} 488 | OrTerm {} 489 | ShiftLeftTerm {} 490 | ShiftRightTerm {} 491 | SubtractTerm {} 492 | ToBCDTerm {} 493 | ToIntegerTerm {} 494 | XOrTerm {} 495 ; 496 497 Type2StringOpcode /* "Type4" Opcodes */ 498 : ToDecimalStringTerm {} 499 | ToHexStringTerm {} 500 | ToStringTerm {} 501 ; 502 503 Type2BufferOpcode /* "Type5" Opcodes */ 504 : ToBufferTerm {} 505 | ConcatResTerm {} 506 ; 507 508 Type2BufferOrStringOpcode 509 : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 510 | PrintfTerm {} 511 | FprintfTerm {} 512 | MidTerm {} 513 ; 514 515 /* 516 * A type 3 opcode evaluates to an Integer and cannot have a destination operand 517 */ 518 519 Type3Opcode 520 : EISAIDTerm {} 521 ; 522 523 /* Obsolete 524 Type4Opcode 525 : ConcatTerm {} 526 | ToDecimalStringTerm {} 527 | ToHexStringTerm {} 528 | MidTerm {} 529 | ToStringTerm {} 530 ; 531 */ 532 533 534 Type5Opcode 535 : ResourceTemplateTerm {} 536 | UnicodeTerm {} 537 | ToPLDTerm {} 538 | ToUUIDTerm {} 539 ; 540 541 Type6Opcode 542 : RefOfTerm {} 543 | DerefOfTerm {} 544 | IndexTerm {} 545 | MethodInvocationTerm {} 546 ; 547 548 IncludeTerm 549 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);} 550 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);} 551 TermList 552 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);} 553 ; 554 555 IncludeEndTerm 556 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} 557 ; 558 559 ExternalTerm 560 : PARSEOP_EXTERNAL '(' 561 NameString 562 OptionalObjectTypeKeyword 563 OptionalParameterTypePackage 564 OptionalParameterTypesPackage 565 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);} 566 | PARSEOP_EXTERNAL '(' 567 error ')' {$$ = AslDoError(); yyclearin;} 568 ; 569 570 571 /******* Named Objects *******************************************************/ 572 573 574 BankFieldTerm 575 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);} 576 NameString 577 NameStringItem 578 TermArgItem 579 ',' AccessTypeKeyword 580 ',' LockRuleKeyword 581 ',' UpdateRuleKeyword 582 ')' '{' 583 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);} 584 | PARSEOP_BANKFIELD '(' 585 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 586 ; 587 588 FieldUnitList 589 : {$$ = NULL;} 590 | FieldUnit 591 | FieldUnitList ',' /* Allows a trailing comma at list end */ 592 | FieldUnitList ',' 593 FieldUnit {$$ = TrLinkPeerNode ($1,$3);} 594 ; 595 596 FieldUnit 597 : FieldUnitEntry {} 598 | OffsetTerm {} 599 | AccessAsTerm {} 600 | ConnectionTerm {} 601 ; 602 603 FieldUnitEntry 604 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} 605 | NameSeg ',' 606 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} 607 ; 608 609 OffsetTerm 610 : PARSEOP_OFFSET '(' 611 AmlPackageLengthTerm 612 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} 613 | PARSEOP_OFFSET '(' 614 error ')' {$$ = AslDoError(); yyclearin;} 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 ConnectionTerm 627 : PARSEOP_CONNECTION '(' 628 NameString 629 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);} 630 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);} 631 ResourceMacroTerm 632 ')' {$$ = TrLinkChildren ($<n>3, 1, 633 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3, 634 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 635 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 636 $4));} 637 | PARSEOP_CONNECTION '(' 638 error ')' {$$ = AslDoError(); yyclearin;} 639 ; 640 641 CreateBitFieldTerm 642 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);} 643 TermArg 644 TermArgItem 645 NameStringItem 646 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 647 | PARSEOP_CREATEBITFIELD '(' 648 error ')' {$$ = AslDoError(); yyclearin;} 649 ; 650 651 CreateByteFieldTerm 652 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);} 653 TermArg 654 TermArgItem 655 NameStringItem 656 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 657 | PARSEOP_CREATEBYTEFIELD '(' 658 error ')' {$$ = AslDoError(); yyclearin;} 659 ; 660 661 CreateDWordFieldTerm 662 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);} 663 TermArg 664 TermArgItem 665 NameStringItem 666 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 667 | PARSEOP_CREATEDWORDFIELD '(' 668 error ')' {$$ = AslDoError(); yyclearin;} 669 ; 670 671 CreateFieldTerm 672 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);} 673 TermArg 674 TermArgItem 675 TermArgItem 676 NameStringItem 677 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));} 678 | PARSEOP_CREATEFIELD '(' 679 error ')' {$$ = AslDoError(); yyclearin;} 680 ; 681 682 CreateQWordFieldTerm 683 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);} 684 TermArg 685 TermArgItem 686 NameStringItem 687 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 688 | PARSEOP_CREATEQWORDFIELD '(' 689 error ')' {$$ = AslDoError(); yyclearin;} 690 ; 691 692 CreateWordFieldTerm 693 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);} 694 TermArg 695 TermArgItem 696 NameStringItem 697 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 698 | PARSEOP_CREATEWORDFIELD '(' 699 error ')' {$$ = AslDoError(); yyclearin;} 700 ; 701 702 DataRegionTerm 703 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);} 704 NameString 705 TermArgItem 706 TermArgItem 707 TermArgItem 708 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);} 709 | PARSEOP_DATATABLEREGION '(' 710 error ')' {$$ = AslDoError(); yyclearin;} 711 ; 712 713 DeviceTerm 714 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);} 715 NameString 716 ')' '{' 717 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 718 | PARSEOP_DEVICE '(' 719 error ')' {$$ = AslDoError(); yyclearin;} 720 ; 721 722 EventTerm 723 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);} 724 NameString 725 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));} 726 | PARSEOP_EVENT '(' 727 error ')' {$$ = AslDoError(); yyclearin;} 728 ; 729 730 FieldTerm 731 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);} 732 NameString 733 ',' AccessTypeKeyword 734 ',' LockRuleKeyword 735 ',' UpdateRuleKeyword 736 ')' '{' 737 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);} 738 | PARSEOP_FIELD '(' 739 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 740 ; 741 742 FunctionTerm 743 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 744 NameString 745 OptionalParameterTypePackage 746 OptionalParameterTypesPackage 747 ')' '{' 748 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION), 749 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0), 750 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL), 751 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);} 752 | PARSEOP_FUNCTION '(' 753 error ')' {$$ = AslDoError(); yyclearin;} 754 ; 755 756 IndexFieldTerm 757 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);} 758 NameString 759 NameStringItem 760 ',' AccessTypeKeyword 761 ',' LockRuleKeyword 762 ',' UpdateRuleKeyword 763 ')' '{' 764 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);} 765 | PARSEOP_INDEXFIELD '(' 766 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 767 ; 768 769 MethodTerm 770 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 771 NameString 772 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);} 773 OptionalSerializeRuleKeyword 774 OptionalByteConstExpr 775 OptionalParameterTypePackage 776 OptionalParameterTypesPackage 777 ')' '{' 778 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);} 779 | PARSEOP_METHOD '(' 780 error ')' {$$ = AslDoError(); yyclearin;} 781 ; 782 783 MutexTerm 784 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);} 785 NameString 786 ',' ByteConstExpr 787 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 788 | PARSEOP_MUTEX '(' 789 error ')' {$$ = AslDoError(); yyclearin;} 790 ; 791 792 OpRegionTerm 793 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);} 794 NameString 795 ',' OpRegionSpaceIdTerm 796 TermArgItem 797 TermArgItem 798 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);} 799 | PARSEOP_OPERATIONREGION '(' 800 error ')' {$$ = AslDoError(); yyclearin;} 801 ; 802 803 OpRegionSpaceIdTerm 804 : RegionSpaceKeyword {} 805 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 806 ; 807 808 PowerResTerm 809 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);} 810 NameString 811 ',' ByteConstExpr 812 ',' WordConstExpr 813 ')' '{' 814 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);} 815 | PARSEOP_POWERRESOURCE '(' 816 error ')' {$$ = AslDoError(); yyclearin;} 817 ; 818 819 ProcessorTerm 820 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);} 821 NameString 822 ',' ByteConstExpr 823 OptionalDWordConstExpr 824 OptionalByteConstExpr 825 ')' '{' 826 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);} 827 | PARSEOP_PROCESSOR '(' 828 error ')' {$$ = AslDoError(); yyclearin;} 829 ; 830 831 ThermalZoneTerm 832 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);} 833 NameString 834 ')' '{' 835 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 836 | PARSEOP_THERMALZONE '(' 837 error ')' {$$ = AslDoError(); yyclearin;} 838 ; 839 840 841 /******* Namespace modifiers *************************************************/ 842 843 844 AliasTerm 845 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);} 846 NameString 847 NameStringItem 848 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));} 849 | PARSEOP_ALIAS '(' 850 error ')' {$$ = AslDoError(); yyclearin;} 851 ; 852 853 NameTerm 854 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);} 855 NameString 856 ',' DataObject 857 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 858 | PARSEOP_NAME '(' 859 error ')' {$$ = AslDoError(); yyclearin;} 860 ; 861 862 ScopeTerm 863 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);} 864 NameString 865 ')' '{' 866 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 867 | PARSEOP_SCOPE '(' 868 error ')' {$$ = AslDoError(); yyclearin;} 869 ; 870 871 872 /******* Type 1 opcodes *******************************************************/ 873 874 875 BreakTerm 876 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} 877 ; 878 879 BreakPointTerm 880 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} 881 ; 882 883 ContinueTerm 884 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} 885 ; 886 887 FatalTerm 888 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);} 889 ByteConstExpr 890 ',' DWordConstExpr 891 TermArgItem 892 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 893 | PARSEOP_FATAL '(' 894 error ')' {$$ = AslDoError(); yyclearin;} 895 ; 896 897 IfElseTerm 898 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} 899 ; 900 901 IfTerm 902 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 903 TermArg 904 ')' '{' 905 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 906 907 | PARSEOP_IF '(' 908 error ')' {$$ = AslDoError(); yyclearin;} 909 ; 910 911 ElseTerm 912 : {$$ = NULL;} 913 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 914 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 915 916 | PARSEOP_ELSE '{' 917 error '}' {$$ = AslDoError(); yyclearin;} 918 919 | PARSEOP_ELSE 920 error {$$ = AslDoError(); yyclearin;} 921 922 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 923 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 924 ')' '{' 925 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);} 926 ElseTerm {TrLinkPeerNode ($<n>5,$11);} 927 {$$ = TrLinkChildren ($<n>3,1,$<n>5);} 928 929 | PARSEOP_ELSEIF '(' 930 error ')' {$$ = AslDoError(); yyclearin;} 931 932 | PARSEOP_ELSEIF 933 error {$$ = AslDoError(); yyclearin;} 934 ; 935 936 LoadTerm 937 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);} 938 NameString 939 RequiredTarget 940 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 941 | PARSEOP_LOAD '(' 942 error ')' {$$ = AslDoError(); yyclearin;} 943 ; 944 945 NoOpTerm 946 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} 947 ; 948 949 NotifyTerm 950 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);} 951 SuperName 952 TermArgItem 953 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 954 | PARSEOP_NOTIFY '(' 955 error ')' {$$ = AslDoError(); yyclearin;} 956 ; 957 958 ReleaseTerm 959 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);} 960 SuperName 961 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 962 | PARSEOP_RELEASE '(' 963 error ')' {$$ = AslDoError(); yyclearin;} 964 ; 965 966 ResetTerm 967 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);} 968 SuperName 969 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 970 | PARSEOP_RESET '(' 971 error ')' {$$ = AslDoError(); yyclearin;} 972 ; 973 974 ReturnTerm 975 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);} 976 OptionalReturnArg 977 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 978 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));} 979 | PARSEOP_RETURN '(' 980 error ')' {$$ = AslDoError(); yyclearin;} 981 ; 982 983 SignalTerm 984 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);} 985 SuperName 986 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 987 | PARSEOP_SIGNAL '(' 988 error ')' {$$ = AslDoError(); yyclearin;} 989 ; 990 991 SleepTerm 992 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);} 993 TermArg 994 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 995 | PARSEOP_SLEEP '(' 996 error ')' {$$ = AslDoError(); yyclearin;} 997 ; 998 999 StallTerm 1000 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);} 1001 TermArg 1002 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1003 | PARSEOP_STALL '(' 1004 error ')' {$$ = AslDoError(); yyclearin;} 1005 ; 1006 1007 SwitchTerm 1008 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);} 1009 TermArg 1010 ')' '{' 1011 CaseDefaultTermList '}' 1012 {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1013 | PARSEOP_SWITCH '(' 1014 error ')' {$$ = AslDoError(); yyclearin;} 1015 ; 1016 1017 /* 1018 * Case-Default list; allow only one Default term and unlimited Case terms 1019 */ 1020 1021 CaseDefaultTermList 1022 : {$$ = NULL;} 1023 | CaseTerm {} 1024 | DefaultTerm {} 1025 | CaseDefaultTermList 1026 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 1027 | CaseDefaultTermList 1028 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);} 1029 1030 /* Original - attempts to force zero or one default term within the switch */ 1031 1032 /* 1033 CaseDefaultTermList 1034 : {$$ = NULL;} 1035 | CaseTermList 1036 DefaultTerm 1037 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} 1038 | CaseTermList 1039 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 1040 ; 1041 1042 CaseTermList 1043 : {$$ = NULL;} 1044 | CaseTerm {} 1045 | CaseTermList 1046 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 1047 ; 1048 */ 1049 1050 CaseTerm 1051 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);} 1052 DataObject 1053 ')' '{' 1054 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1055 | PARSEOP_CASE '(' 1056 error ')' {$$ = AslDoError(); yyclearin;} 1057 ; 1058 1059 DefaultTerm 1060 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);} 1061 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 1062 | PARSEOP_DEFAULT '{' 1063 error '}' {$$ = AslDoError(); yyclearin;} 1064 ; 1065 1066 UnloadTerm 1067 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);} 1068 SuperName 1069 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1070 | PARSEOP_UNLOAD '(' 1071 error ')' {$$ = AslDoError(); yyclearin;} 1072 ; 1073 1074 WhileTerm 1075 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);} 1076 TermArg 1077 ')' '{' TermList '}' 1078 {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1079 | PARSEOP_WHILE '(' 1080 error ')' {$$ = AslDoError(); yyclearin;} 1081 ; 1082 1083 1084 /******* Type 2 opcodes *******************************************************/ 1085 1086 AcquireTerm 1087 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);} 1088 SuperName 1089 ',' WordConstExpr 1090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);} 1091 | PARSEOP_ACQUIRE '(' 1092 error ')' {$$ = AslDoError(); yyclearin;} 1093 ; 1094 1095 AddTerm 1096 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);} 1097 TermArg 1098 TermArgItem 1099 Target 1100 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1101 | PARSEOP_ADD '(' 1102 error ')' {$$ = AslDoError(); yyclearin;} 1103 ; 1104 1105 AndTerm 1106 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);} 1107 TermArg 1108 TermArgItem 1109 Target 1110 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1111 | PARSEOP_AND '(' 1112 error ')' {$$ = AslDoError(); yyclearin;} 1113 ; 1114 1115 ConcatTerm 1116 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);} 1117 TermArg 1118 TermArgItem 1119 Target 1120 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1121 | PARSEOP_CONCATENATE '(' 1122 error ')' {$$ = AslDoError(); yyclearin;} 1123 ; 1124 1125 ConcatResTerm 1126 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);} 1127 TermArg 1128 TermArgItem 1129 Target 1130 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1131 | PARSEOP_CONCATENATERESTEMPLATE '(' 1132 error ')' {$$ = AslDoError(); yyclearin;} 1133 ; 1134 1135 CondRefOfTerm 1136 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);} 1137 SuperName 1138 Target 1139 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1140 | PARSEOP_CONDREFOF '(' 1141 error ')' {$$ = AslDoError(); yyclearin;} 1142 ; 1143 1144 CopyObjectTerm 1145 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);} 1146 TermArg 1147 ',' SimpleTarget 1148 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 1149 | PARSEOP_COPYOBJECT '(' 1150 error ')' {$$ = AslDoError(); yyclearin;} 1151 ; 1152 1153 DecTerm 1154 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 1155 SuperName 1156 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1157 | PARSEOP_DECREMENT '(' 1158 error ')' {$$ = AslDoError(); yyclearin;} 1159 ; 1160 1161 DerefOfTerm 1162 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);} 1163 TermArg 1164 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1165 | PARSEOP_DEREFOF '(' 1166 error ')' {$$ = AslDoError(); yyclearin;} 1167 ; 1168 1169 DivideTerm 1170 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);} 1171 TermArg 1172 TermArgItem 1173 Target 1174 Target 1175 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 1176 | PARSEOP_DIVIDE '(' 1177 error ')' {$$ = AslDoError(); yyclearin;} 1178 ; 1179 1180 FindSetLeftBitTerm 1181 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);} 1182 TermArg 1183 Target 1184 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1185 | PARSEOP_FINDSETLEFTBIT '(' 1186 error ')' {$$ = AslDoError(); yyclearin;} 1187 ; 1188 1189 FindSetRightBitTerm 1190 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);} 1191 TermArg 1192 Target 1193 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1194 | PARSEOP_FINDSETRIGHTBIT '(' 1195 error ')' {$$ = AslDoError(); yyclearin;} 1196 ; 1197 1198 FromBCDTerm 1199 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);} 1200 TermArg 1201 Target 1202 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1203 | PARSEOP_FROMBCD '(' 1204 error ')' {$$ = AslDoError(); yyclearin;} 1205 ; 1206 1207 IncTerm 1208 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 1209 SuperName 1210 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1211 | PARSEOP_INCREMENT '(' 1212 error ')' {$$ = AslDoError(); yyclearin;} 1213 ; 1214 1215 IndexTerm 1216 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);} 1217 TermArg 1218 TermArgItem 1219 Target 1220 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1221 | PARSEOP_INDEX '(' 1222 error ')' {$$ = AslDoError(); yyclearin;} 1223 ; 1224 1225 LAndTerm 1226 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);} 1227 TermArg 1228 TermArgItem 1229 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1230 | PARSEOP_LAND '(' 1231 error ')' {$$ = AslDoError(); yyclearin;} 1232 ; 1233 1234 LEqualTerm 1235 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1236 TermArg 1237 TermArgItem 1238 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1239 | PARSEOP_LEQUAL '(' 1240 error ')' {$$ = AslDoError(); yyclearin;} 1241 ; 1242 1243 LGreaterTerm 1244 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1245 TermArg 1246 TermArgItem 1247 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1248 | PARSEOP_LGREATER '(' 1249 error ')' {$$ = AslDoError(); yyclearin;} 1250 ; 1251 1252 LGreaterEqualTerm 1253 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1254 TermArg 1255 TermArgItem 1256 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1257 | PARSEOP_LGREATEREQUAL '(' 1258 error ')' {$$ = AslDoError(); yyclearin;} 1259 ; 1260 1261 LLessTerm 1262 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1263 TermArg 1264 TermArgItem 1265 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1266 | PARSEOP_LLESS '(' 1267 error ')' {$$ = AslDoError(); yyclearin;} 1268 ; 1269 1270 LLessEqualTerm 1271 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1272 TermArg 1273 TermArgItem 1274 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1275 | PARSEOP_LLESSEQUAL '(' 1276 error ')' {$$ = AslDoError(); yyclearin;} 1277 ; 1278 1279 LNotTerm 1280 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 1281 TermArg 1282 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1283 | PARSEOP_LNOT '(' 1284 error ')' {$$ = AslDoError(); yyclearin;} 1285 ; 1286 1287 LNotEqualTerm 1288 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1289 TermArg 1290 TermArgItem 1291 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1292 | PARSEOP_LNOTEQUAL '(' 1293 error ')' {$$ = AslDoError(); yyclearin;} 1294 ; 1295 1296 LoadTableTerm 1297 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);} 1298 TermArg 1299 TermArgItem 1300 TermArgItem 1301 OptionalListString 1302 OptionalListString 1303 OptionalReference 1304 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);} 1305 | PARSEOP_LOADTABLE '(' 1306 error ')' {$$ = AslDoError(); yyclearin;} 1307 ; 1308 1309 LOrTerm 1310 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);} 1311 TermArg 1312 TermArgItem 1313 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1314 | PARSEOP_LOR '(' 1315 error ')' {$$ = AslDoError(); yyclearin;} 1316 ; 1317 1318 MatchTerm 1319 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);} 1320 TermArg 1321 ',' MatchOpKeyword 1322 TermArgItem 1323 ',' MatchOpKeyword 1324 TermArgItem 1325 TermArgItem 1326 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);} 1327 | PARSEOP_MATCH '(' 1328 error ')' {$$ = AslDoError(); yyclearin;} 1329 ; 1330 1331 MidTerm 1332 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);} 1333 TermArg 1334 TermArgItem 1335 TermArgItem 1336 Target 1337 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 1338 | PARSEOP_MID '(' 1339 error ')' {$$ = AslDoError(); yyclearin;} 1340 ; 1341 1342 ModTerm 1343 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);} 1344 TermArg 1345 TermArgItem 1346 Target 1347 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1348 | PARSEOP_MOD '(' 1349 error ')' {$$ = AslDoError(); yyclearin;} 1350 ; 1351 1352 MultiplyTerm 1353 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} 1354 TermArg 1355 TermArgItem 1356 Target 1357 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1358 | PARSEOP_MULTIPLY '(' 1359 error ')' {$$ = AslDoError(); yyclearin;} 1360 ; 1361 1362 NAndTerm 1363 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);} 1364 TermArg 1365 TermArgItem 1366 Target 1367 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1368 | PARSEOP_NAND '(' 1369 error ')' {$$ = AslDoError(); yyclearin;} 1370 ; 1371 1372 NOrTerm 1373 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);} 1374 TermArg 1375 TermArgItem 1376 Target 1377 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1378 | PARSEOP_NOR '(' 1379 error ')' {$$ = AslDoError(); yyclearin;} 1380 ; 1381 1382 NotTerm 1383 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);} 1384 TermArg 1385 Target 1386 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1387 | PARSEOP_NOT '(' 1388 error ')' {$$ = AslDoError(); yyclearin;} 1389 ; 1390 1391 ObjectTypeTerm 1392 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} 1393 ObjectTypeName 1394 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1395 | PARSEOP_OBJECTTYPE '(' 1396 error ')' {$$ = AslDoError(); yyclearin;} 1397 ; 1398 1399 OrTerm 1400 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);} 1401 TermArg 1402 TermArgItem 1403 Target 1404 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1405 | PARSEOP_OR '(' 1406 error ')' {$$ = AslDoError(); yyclearin;} 1407 ; 1408 1409 /* 1410 * In RefOf, the node isn't really a target, but we can't keep track of it after 1411 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.) 1412 */ 1413 RefOfTerm 1414 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);} 1415 SuperName 1416 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));} 1417 | PARSEOP_REFOF '(' 1418 error ')' {$$ = AslDoError(); yyclearin;} 1419 ; 1420 1421 ShiftLeftTerm 1422 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} 1423 TermArg 1424 TermArgItem 1425 Target 1426 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1427 | PARSEOP_SHIFTLEFT '(' 1428 error ')' {$$ = AslDoError(); yyclearin;} 1429 ; 1430 1431 ShiftRightTerm 1432 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} 1433 TermArg 1434 TermArgItem 1435 Target 1436 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1437 | PARSEOP_SHIFTRIGHT '(' 1438 error ')' {$$ = AslDoError(); yyclearin;} 1439 ; 1440 1441 SizeOfTerm 1442 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);} 1443 SuperName 1444 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1445 | PARSEOP_SIZEOF '(' 1446 error ')' {$$ = AslDoError(); yyclearin;} 1447 ; 1448 1449 StoreTerm 1450 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);} 1451 TermArg 1452 ',' SuperName 1453 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 1454 | PARSEOP_STORE '(' 1455 error ')' {$$ = AslDoError(); yyclearin;} 1456 ; 1457 1458 SubtractTerm 1459 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} 1460 TermArg 1461 TermArgItem 1462 Target 1463 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1464 | PARSEOP_SUBTRACT '(' 1465 error ')' {$$ = AslDoError(); yyclearin;} 1466 ; 1467 1468 TimerTerm 1469 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);} 1470 ')' {$$ = TrLinkChildren ($<n>3,0);} 1471 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);} 1472 | PARSEOP_TIMER '(' 1473 error ')' {$$ = AslDoError(); yyclearin;} 1474 ; 1475 1476 ToBCDTerm 1477 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);} 1478 TermArg 1479 Target 1480 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1481 | PARSEOP_TOBCD '(' 1482 error ')' {$$ = AslDoError(); yyclearin;} 1483 ; 1484 1485 ToBufferTerm 1486 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);} 1487 TermArg 1488 Target 1489 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1490 | PARSEOP_TOBUFFER '(' 1491 error ')' {$$ = AslDoError(); yyclearin;} 1492 ; 1493 1494 ToDecimalStringTerm 1495 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);} 1496 TermArg 1497 Target 1498 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1499 | PARSEOP_TODECIMALSTRING '(' 1500 error ')' {$$ = AslDoError(); yyclearin;} 1501 ; 1502 1503 ToHexStringTerm 1504 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);} 1505 TermArg 1506 Target 1507 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1508 | PARSEOP_TOHEXSTRING '(' 1509 error ')' {$$ = AslDoError(); yyclearin;} 1510 ; 1511 1512 ToIntegerTerm 1513 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);} 1514 TermArg 1515 Target 1516 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1517 | PARSEOP_TOINTEGER '(' 1518 error ')' {$$ = AslDoError(); yyclearin;} 1519 ; 1520 1521 PldKeyword 1522 : PARSEOP_PLD_REVISION {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);} 1523 | PARSEOP_PLD_IGNORECOLOR {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);} 1524 | PARSEOP_PLD_RED {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);} 1525 | PARSEOP_PLD_GREEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);} 1526 | PARSEOP_PLD_BLUE {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);} 1527 | PARSEOP_PLD_WIDTH {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);} 1528 | PARSEOP_PLD_HEIGHT {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);} 1529 | PARSEOP_PLD_USERVISIBLE {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);} 1530 | PARSEOP_PLD_DOCK {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);} 1531 | PARSEOP_PLD_LID {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);} 1532 | PARSEOP_PLD_PANEL {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);} 1533 | PARSEOP_PLD_VERTICALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);} 1534 | PARSEOP_PLD_HORIZONTALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);} 1535 | PARSEOP_PLD_SHAPE {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);} 1536 | PARSEOP_PLD_GROUPORIENTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);} 1537 | PARSEOP_PLD_GROUPTOKEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);} 1538 | PARSEOP_PLD_GROUPPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);} 1539 | PARSEOP_PLD_BAY {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);} 1540 | PARSEOP_PLD_EJECTABLE {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);} 1541 | PARSEOP_PLD_EJECTREQUIRED {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);} 1542 | PARSEOP_PLD_CABINETNUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);} 1543 | PARSEOP_PLD_CARDCAGENUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);} 1544 | PARSEOP_PLD_REFERENCE {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);} 1545 | PARSEOP_PLD_ROTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);} 1546 | PARSEOP_PLD_ORDER {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);} 1547 | PARSEOP_PLD_RESERVED {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);} 1548 | PARSEOP_PLD_VERTICALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);} 1549 | PARSEOP_PLD_HORIZONTALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);} 1550 ; 1551 1552 PldKeywordList 1553 : {$$ = NULL;} 1554 | PldKeyword 1555 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);} 1556 | PldKeyword 1557 PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);} 1558 | PldKeywordList ',' /* Allows a trailing comma at list end */ 1559 | PldKeywordList ',' 1560 PldKeyword 1561 PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));} 1562 | PldKeywordList ',' 1563 PldKeyword 1564 PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));} 1565 ; 1566 1567 ToPLDTerm 1568 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);} 1569 PldKeywordList 1570 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1571 | PARSEOP_TOPLD '(' 1572 error ')' {$$ = AslDoError(); yyclearin;} 1573 ; 1574 1575 PrintfArgList 1576 : {$$ = NULL;} 1577 | TermArg {$$ = $1;} 1578 | PrintfArgList ',' 1579 TermArg {$$ = TrLinkPeerNode ($1, $3);} 1580 ; 1581 1582 PrintfTerm 1583 : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);} 1584 StringData 1585 PrintfArgList 1586 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1587 | PARSEOP_PRINTF '(' 1588 error ')' {$$ = AslDoError(); yyclearin;} 1589 ; 1590 1591 FprintfTerm 1592 : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);} 1593 TermArg ',' 1594 StringData 1595 PrintfArgList 1596 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 1597 | PARSEOP_FPRINTF '(' 1598 error ')' {$$ = AslDoError(); yyclearin;} 1599 ; 1600 1601 ToStringTerm 1602 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);} 1603 TermArg 1604 OptionalCount 1605 Target 1606 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1607 | PARSEOP_TOSTRING '(' 1608 error ')' {$$ = AslDoError(); yyclearin;} 1609 ; 1610 1611 ToUUIDTerm 1612 : PARSEOP_TOUUID '(' 1613 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} 1614 | PARSEOP_TOUUID '(' 1615 error ')' {$$ = AslDoError(); yyclearin;} 1616 ; 1617 1618 WaitTerm 1619 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);} 1620 SuperName 1621 TermArgItem 1622 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1623 | PARSEOP_WAIT '(' 1624 error ')' {$$ = AslDoError(); yyclearin;} 1625 ; 1626 1627 XOrTerm 1628 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);} 1629 TermArg 1630 TermArgItem 1631 Target 1632 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1633 | PARSEOP_XOR '(' 1634 error ')' {$$ = AslDoError(); yyclearin;} 1635 ; 1636 1637 1638 /******* Keywords *************************************************************/ 1639 1640 1641 AccessAttribKeyword 1642 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);} 1643 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);} 1644 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);} 1645 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );} 1646 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);} 1647 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);} 1648 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);} 1649 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);} 1650 ByteConst 1651 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1652 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);} 1653 ByteConst 1654 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1655 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);} 1656 ByteConst 1657 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1658 ; 1659 1660 AccessTypeKeyword 1661 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);} 1662 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);} 1663 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);} 1664 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);} 1665 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);} 1666 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);} 1667 ; 1668 1669 AddressingModeKeyword 1670 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} 1671 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} 1672 ; 1673 1674 AddressKeyword 1675 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);} 1676 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);} 1677 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);} 1678 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);} 1679 ; 1680 1681 AddressSpaceKeyword 1682 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} 1683 | RegionSpaceKeyword {} 1684 ; 1685 1686 BitsPerByteKeyword 1687 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);} 1688 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);} 1689 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);} 1690 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);} 1691 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);} 1692 ; 1693 1694 ClockPhaseKeyword 1695 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} 1696 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} 1697 ; 1698 1699 ClockPolarityKeyword 1700 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} 1701 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} 1702 ; 1703 1704 DecodeKeyword 1705 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} 1706 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} 1707 ; 1708 1709 DevicePolarityKeyword 1710 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} 1711 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} 1712 ; 1713 1714 DMATypeKeyword 1715 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);} 1716 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);} 1717 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);} 1718 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);} 1719 ; 1720 1721 EndianKeyword 1722 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} 1723 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} 1724 ; 1725 1726 FlowControlKeyword 1727 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);} 1728 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);} 1729 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);} 1730 ; 1731 1732 InterruptLevel 1733 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);} 1734 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);} 1735 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);} 1736 ; 1737 1738 InterruptTypeKeyword 1739 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} 1740 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} 1741 ; 1742 1743 IODecodeKeyword 1744 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} 1745 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} 1746 ; 1747 1748 IoRestrictionKeyword 1749 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);} 1750 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);} 1751 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);} 1752 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);} 1753 ; 1754 1755 LockRuleKeyword 1756 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} 1757 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} 1758 ; 1759 1760 MatchOpKeyword 1761 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);} 1762 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);} 1763 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);} 1764 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);} 1765 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);} 1766 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);} 1767 ; 1768 1769 MaxKeyword 1770 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} 1771 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} 1772 ; 1773 1774 MemTypeKeyword 1775 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);} 1776 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);} 1777 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);} 1778 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);} 1779 ; 1780 1781 MinKeyword 1782 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} 1783 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} 1784 ; 1785 1786 ObjectTypeKeyword 1787 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 1788 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);} 1789 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);} 1790 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);} 1791 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);} 1792 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);} 1793 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);} 1794 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);} 1795 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);} 1796 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);} 1797 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);} 1798 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);} 1799 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);} 1800 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);} 1801 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);} 1802 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);} 1803 ; 1804 1805 ParityTypeKeyword 1806 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);} 1807 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);} 1808 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);} 1809 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);} 1810 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);} 1811 ; 1812 1813 PinConfigByte 1814 : PinConfigKeyword {$$ = $1;} 1815 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 1816 ; 1817 1818 PinConfigKeyword 1819 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);} 1820 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);} 1821 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);} 1822 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);} 1823 ; 1824 1825 RangeTypeKeyword 1826 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);} 1827 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);} 1828 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);} 1829 ; 1830 1831 RegionSpaceKeyword 1832 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);} 1833 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);} 1834 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);} 1835 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);} 1836 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);} 1837 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);} 1838 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);} 1839 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);} 1840 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);} 1841 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);} 1842 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);} 1843 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);} 1844 ; 1845 1846 ResourceTypeKeyword 1847 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1848 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} 1849 ; 1850 1851 SerializeRuleKeyword 1852 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} 1853 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} 1854 ; 1855 1856 ShareTypeKeyword 1857 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);} 1858 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);} 1859 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);} 1860 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);} 1861 ; 1862 1863 SlaveModeKeyword 1864 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} 1865 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} 1866 ; 1867 1868 StopBitsKeyword 1869 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);} 1870 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);} 1871 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);} 1872 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);} 1873 ; 1874 1875 TranslationKeyword 1876 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} 1877 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} 1878 ; 1879 1880 TypeKeyword 1881 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} 1882 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} 1883 ; 1884 1885 UpdateRuleKeyword 1886 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);} 1887 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);} 1888 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);} 1889 ; 1890 1891 WireModeKeyword 1892 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} 1893 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} 1894 ; 1895 1896 XferSizeKeyword 1897 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);} 1898 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);} 1899 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 1900 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);} 1901 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);} 1902 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);} 1903 ; 1904 1905 XferTypeKeyword 1906 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);} 1907 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);} 1908 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);} 1909 ; 1910 1911 1912 /******* Miscellaneous Types **************************************************/ 1913 1914 1915 SuperName 1916 : NameString {} 1917 | ArgTerm {} 1918 | LocalTerm {} 1919 | DebugTerm {} 1920 | Type6Opcode {} 1921 1922 /* For ObjectType: SuperName except for MethodInvocationTerm */ 1923 1924 ObjectTypeName 1925 : NameString {} 1926 | ArgTerm {} 1927 | LocalTerm {} 1928 | DebugTerm {} 1929 | RefOfTerm {} 1930 | DerefOfTerm {} 1931 | IndexTerm {} 1932 1933 /* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */ 1934 ; 1935 1936 ArgTerm 1937 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);} 1938 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);} 1939 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);} 1940 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);} 1941 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);} 1942 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);} 1943 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);} 1944 ; 1945 1946 LocalTerm 1947 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);} 1948 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);} 1949 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);} 1950 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);} 1951 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);} 1952 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);} 1953 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);} 1954 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);} 1955 ; 1956 1957 DebugTerm 1958 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} 1959 ; 1960 1961 1962 ByteConst 1963 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 1964 ; 1965 1966 WordConst 1967 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 1968 ; 1969 1970 DWordConst 1971 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 1972 ; 1973 1974 QWordConst 1975 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 1976 ; 1977 1978 Integer 1979 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} 1980 ; 1981 1982 String 1983 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} 1984 ; 1985 1986 ConstTerm 1987 : ConstExprTerm {} 1988 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} 1989 ; 1990 1991 ConstExprTerm 1992 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);} 1993 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);} 1994 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);} 1995 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);} 1996 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);} 1997 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);} 1998 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);} 1999 ; 2000 2001 /* 2002 * The NODE_COMPILE_TIME_CONST flag in the following constant expressions 2003 * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes 2004 * to simple integers. It is an error if these types of expressions cannot be 2005 * reduced, since the AML grammar for ****ConstExpr requires a simple constant. 2006 * Note: The required byte length of the constant is passed through to the 2007 * constant folding code in the node AmlLength field. 2008 */ 2009 ByteConstExpr 2010 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 2011 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 2012 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 2013 | ByteConst {} 2014 ; 2015 2016 WordConstExpr 2017 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 2018 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 2019 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 2020 | WordConst {} 2021 ; 2022 2023 DWordConstExpr 2024 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 2025 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 2026 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 2027 | DWordConst {} 2028 ; 2029 2030 QWordConstExpr 2031 : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 2032 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 2033 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 2034 | QWordConst {} 2035 ; 2036 2037 /* OptionalCount must appear before ByteList or an incorrect reduction will result */ 2038 2039 OptionalCount 2040 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 2041 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 2042 | ',' TermArg {$$ = $2;} 2043 ; 2044 2045 BufferTerm 2046 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);} 2047 OptionalTermArg 2048 ')' '{' 2049 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2050 | PARSEOP_BUFFER '(' 2051 error ')' {$$ = AslDoError(); yyclearin;} 2052 ; 2053 2054 BufferTermData 2055 : ByteList {} 2056 | StringData {} 2057 ; 2058 2059 ByteList 2060 : {$$ = NULL;} 2061 | ByteConstExpr 2062 | ByteList ',' /* Allows a trailing comma at list end */ 2063 | ByteList ',' 2064 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} 2065 ; 2066 2067 DataBufferTerm 2068 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);} 2069 OptionalWordConst 2070 ')' '{' 2071 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2072 | PARSEOP_DATABUFFER '(' 2073 error ')' {$$ = AslDoError(); yyclearin;} 2074 ; 2075 2076 DWordList 2077 : {$$ = NULL;} 2078 | DWordConstExpr 2079 | DWordList ',' /* Allows a trailing comma at list end */ 2080 | DWordList ',' 2081 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} 2082 ; 2083 2084 PackageTerm 2085 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);} 2086 VarPackageLengthTerm 2087 ')' '{' 2088 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2089 | PARSEOP_PACKAGE '(' 2090 error ')' {$$ = AslDoError(); yyclearin;} 2091 ; 2092 2093 PackageList 2094 : {$$ = NULL;} 2095 | PackageElement 2096 | PackageList ',' /* Allows a trailing comma at list end */ 2097 | PackageList ',' 2098 PackageElement {$$ = TrLinkPeerNode ($1,$3);} 2099 ; 2100 2101 PackageElement 2102 : DataObject {} 2103 | NameString {} 2104 ; 2105 2106 VarPackageLengthTerm 2107 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 2108 | TermArg {$$ = $1;} 2109 ; 2110 2111 2112 /******* Macros ***********************************************/ 2113 2114 2115 EISAIDTerm 2116 : PARSEOP_EISAID '(' 2117 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} 2118 | PARSEOP_EISAID '(' 2119 error ')' {$$ = AslDoError(); yyclearin;} 2120 ; 2121 2122 UnicodeTerm 2123 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);} 2124 StringData 2125 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);} 2126 | PARSEOP_UNICODE '(' 2127 error ')' {$$ = AslDoError(); yyclearin;} 2128 ; 2129 2130 2131 /******* Resources and Memory ***********************************************/ 2132 2133 2134 /* 2135 * Note: Create two default nodes to allow conversion to a Buffer AML opcode 2136 * Also, insert the EndTag at the end of the template. 2137 */ 2138 ResourceTemplateTerm 2139 : PARSEOP_RESOURCETEMPLATE '(' ')' 2140 '{' 2141 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4, 2142 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 2143 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 2144 $5, 2145 TrCreateLeafNode (PARSEOP_ENDTAG));} 2146 ; 2147 2148 ResourceMacroList 2149 : {$$ = NULL;} 2150 | ResourceMacroList 2151 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} 2152 ; 2153 2154 ResourceMacroTerm 2155 : DMATerm {} 2156 | DWordIOTerm {} 2157 | DWordMemoryTerm {} 2158 | DWordSpaceTerm {} 2159 | EndDependentFnTerm {} 2160 | ExtendedIOTerm {} 2161 | ExtendedMemoryTerm {} 2162 | ExtendedSpaceTerm {} 2163 | FixedDmaTerm {} 2164 | FixedIOTerm {} 2165 | GpioIntTerm {} 2166 | GpioIoTerm {} 2167 | I2cSerialBusTerm {} 2168 | InterruptTerm {} 2169 | IOTerm {} 2170 | IRQNoFlagsTerm {} 2171 | IRQTerm {} 2172 | Memory24Term {} 2173 | Memory32FixedTerm {} 2174 | Memory32Term {} 2175 | QWordIOTerm {} 2176 | QWordMemoryTerm {} 2177 | QWordSpaceTerm {} 2178 | RegisterTerm {} 2179 | SpiSerialBusTerm {} 2180 | StartDependentFnNoPriTerm {} 2181 | StartDependentFnTerm {} 2182 | UartSerialBusTerm {} 2183 | VendorLongTerm {} 2184 | VendorShortTerm {} 2185 | WordBusNumberTerm {} 2186 | WordIOTerm {} 2187 | WordSpaceTerm {} 2188 ; 2189 2190 DMATerm 2191 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);} 2192 DMATypeKeyword 2193 OptionalBusMasterKeyword 2194 ',' XferTypeKeyword 2195 OptionalNameString_Last 2196 ')' '{' 2197 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);} 2198 | PARSEOP_DMA '(' 2199 error ')' {$$ = AslDoError(); yyclearin;} 2200 ; 2201 2202 DWordIOTerm 2203 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);} 2204 OptionalResourceType_First 2205 OptionalMinType 2206 OptionalMaxType 2207 OptionalDecodeType 2208 OptionalRangeType 2209 ',' DWordConstExpr 2210 ',' DWordConstExpr 2211 ',' DWordConstExpr 2212 ',' DWordConstExpr 2213 ',' DWordConstExpr 2214 OptionalByteConstExpr 2215 OptionalStringData 2216 OptionalNameString 2217 OptionalType 2218 OptionalTranslationType_Last 2219 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 2220 | PARSEOP_DWORDIO '(' 2221 error ')' {$$ = AslDoError(); yyclearin;} 2222 ; 2223 2224 DWordMemoryTerm 2225 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);} 2226 OptionalResourceType_First 2227 OptionalDecodeType 2228 OptionalMinType 2229 OptionalMaxType 2230 OptionalMemType 2231 ',' OptionalReadWriteKeyword 2232 ',' DWordConstExpr 2233 ',' DWordConstExpr 2234 ',' DWordConstExpr 2235 ',' DWordConstExpr 2236 ',' DWordConstExpr 2237 OptionalByteConstExpr 2238 OptionalStringData 2239 OptionalNameString 2240 OptionalAddressRange 2241 OptionalType_Last 2242 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 2243 | PARSEOP_DWORDMEMORY '(' 2244 error ')' {$$ = AslDoError(); yyclearin;} 2245 ; 2246 2247 DWordSpaceTerm 2248 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);} 2249 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2250 OptionalResourceType 2251 OptionalDecodeType 2252 OptionalMinType 2253 OptionalMaxType 2254 ',' ByteConstExpr 2255 ',' DWordConstExpr 2256 ',' DWordConstExpr 2257 ',' DWordConstExpr 2258 ',' DWordConstExpr 2259 ',' DWordConstExpr 2260 OptionalByteConstExpr 2261 OptionalStringData 2262 OptionalNameString_Last 2263 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2264 | PARSEOP_DWORDSPACE '(' 2265 error ')' {$$ = AslDoError(); yyclearin;} 2266 ; 2267 2268 2269 EndDependentFnTerm 2270 : PARSEOP_ENDDEPENDENTFN '(' 2271 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} 2272 | PARSEOP_ENDDEPENDENTFN '(' 2273 error ')' {$$ = AslDoError(); yyclearin;} 2274 ; 2275 2276 ExtendedIOTerm 2277 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);} 2278 OptionalResourceType_First 2279 OptionalMinType 2280 OptionalMaxType 2281 OptionalDecodeType 2282 OptionalRangeType 2283 ',' QWordConstExpr 2284 ',' QWordConstExpr 2285 ',' QWordConstExpr 2286 ',' QWordConstExpr 2287 ',' QWordConstExpr 2288 OptionalQWordConstExpr 2289 OptionalNameString 2290 OptionalType 2291 OptionalTranslationType_Last 2292 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);} 2293 | PARSEOP_EXTENDEDIO '(' 2294 error ')' {$$ = AslDoError(); yyclearin;} 2295 ; 2296 2297 ExtendedMemoryTerm 2298 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);} 2299 OptionalResourceType_First 2300 OptionalDecodeType 2301 OptionalMinType 2302 OptionalMaxType 2303 OptionalMemType 2304 ',' OptionalReadWriteKeyword 2305 ',' QWordConstExpr 2306 ',' QWordConstExpr 2307 ',' QWordConstExpr 2308 ',' QWordConstExpr 2309 ',' QWordConstExpr 2310 OptionalQWordConstExpr 2311 OptionalNameString 2312 OptionalAddressRange 2313 OptionalType_Last 2314 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);} 2315 | PARSEOP_EXTENDEDMEMORY '(' 2316 error ')' {$$ = AslDoError(); yyclearin;} 2317 ; 2318 2319 ExtendedSpaceTerm 2320 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);} 2321 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2322 OptionalResourceType 2323 OptionalDecodeType 2324 OptionalMinType 2325 OptionalMaxType 2326 ',' ByteConstExpr 2327 ',' QWordConstExpr 2328 ',' QWordConstExpr 2329 ',' QWordConstExpr 2330 ',' QWordConstExpr 2331 ',' QWordConstExpr 2332 OptionalQWordConstExpr 2333 OptionalNameString_Last 2334 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);} 2335 | PARSEOP_EXTENDEDSPACE '(' 2336 error ')' {$$ = AslDoError(); yyclearin;} 2337 ; 2338 2339 FixedDmaTerm 2340 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);} 2341 WordConstExpr /* 04: DMA RequestLines */ 2342 ',' WordConstExpr /* 06: DMA Channels */ 2343 OptionalXferSize /* 07: DMA TransferSize */ 2344 OptionalNameString /* 08: DescriptorName */ 2345 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);} 2346 | PARSEOP_FIXEDDMA '(' 2347 error ')' {$$ = AslDoError(); yyclearin;} 2348 ; 2349 2350 FixedIOTerm 2351 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);} 2352 WordConstExpr 2353 ',' ByteConstExpr 2354 OptionalNameString_Last 2355 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 2356 | PARSEOP_FIXEDIO '(' 2357 error ')' {$$ = AslDoError(); yyclearin;} 2358 ; 2359 2360 GpioIntTerm 2361 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);} 2362 InterruptTypeKeyword /* 04: InterruptType */ 2363 ',' InterruptLevel /* 06: InterruptLevel */ 2364 OptionalShareType /* 07: SharedType */ 2365 ',' PinConfigByte /* 09: PinConfig */ 2366 OptionalWordConstExpr /* 10: DebounceTimeout */ 2367 ',' StringData /* 12: ResourceSource */ 2368 OptionalByteConstExpr /* 13: ResourceSourceIndex */ 2369 OptionalResourceType /* 14: ResourceType */ 2370 OptionalNameString /* 15: DescriptorName */ 2371 OptionalBuffer_Last /* 16: VendorData */ 2372 ')' '{' 2373 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);} 2374 | PARSEOP_GPIO_INT '(' 2375 error ')' {$$ = AslDoError(); yyclearin;} 2376 ; 2377 2378 GpioIoTerm 2379 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);} 2380 OptionalShareType_First /* 04: SharedType */ 2381 ',' PinConfigByte /* 06: PinConfig */ 2382 OptionalWordConstExpr /* 07: DebounceTimeout */ 2383 OptionalWordConstExpr /* 08: DriveStrength */ 2384 OptionalIoRestriction /* 09: IoRestriction */ 2385 ',' StringData /* 11: ResourceSource */ 2386 OptionalByteConstExpr /* 12: ResourceSourceIndex */ 2387 OptionalResourceType /* 13: ResourceType */ 2388 OptionalNameString /* 14: DescriptorName */ 2389 OptionalBuffer_Last /* 15: VendorData */ 2390 ')' '{' 2391 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);} 2392 | PARSEOP_GPIO_IO '(' 2393 error ')' {$$ = AslDoError(); yyclearin;} 2394 ; 2395 2396 I2cSerialBusTerm 2397 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);} 2398 WordConstExpr /* 04: SlaveAddress */ 2399 OptionalSlaveMode /* 05: SlaveMode */ 2400 ',' DWordConstExpr /* 07: ConnectionSpeed */ 2401 OptionalAddressingMode /* 08: AddressingMode */ 2402 ',' StringData /* 10: ResourceSource */ 2403 OptionalByteConstExpr /* 11: ResourceSourceIndex */ 2404 OptionalResourceType /* 12: ResourceType */ 2405 OptionalNameString /* 13: DescriptorName */ 2406 OptionalBuffer_Last /* 14: VendorData */ 2407 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);} 2408 | PARSEOP_I2C_SERIALBUS '(' 2409 error ')' {$$ = AslDoError(); yyclearin;} 2410 ; 2411 2412 InterruptTerm 2413 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);} 2414 OptionalResourceType_First 2415 ',' InterruptTypeKeyword 2416 ',' InterruptLevel 2417 OptionalShareType 2418 OptionalByteConstExpr 2419 OptionalStringData 2420 OptionalNameString_Last 2421 ')' '{' 2422 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);} 2423 | PARSEOP_INTERRUPT '(' 2424 error ')' {$$ = AslDoError(); yyclearin;} 2425 ; 2426 2427 IOTerm 2428 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);} 2429 IODecodeKeyword 2430 ',' WordConstExpr 2431 ',' WordConstExpr 2432 ',' ByteConstExpr 2433 ',' ByteConstExpr 2434 OptionalNameString_Last 2435 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2436 | PARSEOP_IO '(' 2437 error ')' {$$ = AslDoError(); yyclearin;} 2438 ; 2439 2440 IRQNoFlagsTerm 2441 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);} 2442 OptionalNameString_First 2443 ')' '{' 2444 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2445 | PARSEOP_IRQNOFLAGS '(' 2446 error ')' {$$ = AslDoError(); yyclearin;} 2447 ; 2448 2449 IRQTerm 2450 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);} 2451 InterruptTypeKeyword 2452 ',' InterruptLevel 2453 OptionalShareType 2454 OptionalNameString_Last 2455 ')' '{' 2456 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);} 2457 | PARSEOP_IRQ '(' 2458 error ')' {$$ = AslDoError(); yyclearin;} 2459 ; 2460 2461 Memory24Term 2462 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);} 2463 OptionalReadWriteKeyword 2464 ',' WordConstExpr 2465 ',' WordConstExpr 2466 ',' WordConstExpr 2467 ',' WordConstExpr 2468 OptionalNameString_Last 2469 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2470 | PARSEOP_MEMORY24 '(' 2471 error ')' {$$ = AslDoError(); yyclearin;} 2472 ; 2473 2474 Memory32FixedTerm 2475 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);} 2476 OptionalReadWriteKeyword 2477 ',' DWordConstExpr 2478 ',' DWordConstExpr 2479 OptionalNameString_Last 2480 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);} 2481 | PARSEOP_MEMORY32FIXED '(' 2482 error ')' {$$ = AslDoError(); yyclearin;} 2483 ; 2484 2485 Memory32Term 2486 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);} 2487 OptionalReadWriteKeyword 2488 ',' DWordConstExpr 2489 ',' DWordConstExpr 2490 ',' DWordConstExpr 2491 ',' DWordConstExpr 2492 OptionalNameString_Last 2493 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 2494 | PARSEOP_MEMORY32 '(' 2495 error ')' {$$ = AslDoError(); yyclearin;} 2496 ; 2497 2498 QWordIOTerm 2499 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);} 2500 OptionalResourceType_First 2501 OptionalMinType 2502 OptionalMaxType 2503 OptionalDecodeType 2504 OptionalRangeType 2505 ',' QWordConstExpr 2506 ',' QWordConstExpr 2507 ',' QWordConstExpr 2508 ',' QWordConstExpr 2509 ',' QWordConstExpr 2510 OptionalByteConstExpr 2511 OptionalStringData 2512 OptionalNameString 2513 OptionalType 2514 OptionalTranslationType_Last 2515 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 2516 | PARSEOP_QWORDIO '(' 2517 error ')' {$$ = AslDoError(); yyclearin;} 2518 ; 2519 2520 QWordMemoryTerm 2521 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);} 2522 OptionalResourceType_First 2523 OptionalDecodeType 2524 OptionalMinType 2525 OptionalMaxType 2526 OptionalMemType 2527 ',' OptionalReadWriteKeyword 2528 ',' QWordConstExpr 2529 ',' QWordConstExpr 2530 ',' QWordConstExpr 2531 ',' QWordConstExpr 2532 ',' QWordConstExpr 2533 OptionalByteConstExpr 2534 OptionalStringData 2535 OptionalNameString 2536 OptionalAddressRange 2537 OptionalType_Last 2538 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 2539 | PARSEOP_QWORDMEMORY '(' 2540 error ')' {$$ = AslDoError(); yyclearin;} 2541 ; 2542 2543 QWordSpaceTerm 2544 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);} 2545 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2546 OptionalResourceType 2547 OptionalDecodeType 2548 OptionalMinType 2549 OptionalMaxType 2550 ',' ByteConstExpr 2551 ',' QWordConstExpr 2552 ',' QWordConstExpr 2553 ',' QWordConstExpr 2554 ',' QWordConstExpr 2555 ',' QWordConstExpr 2556 OptionalByteConstExpr 2557 OptionalStringData 2558 OptionalNameString_Last 2559 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2560 | PARSEOP_QWORDSPACE '(' 2561 error ')' {$$ = AslDoError(); yyclearin;} 2562 ; 2563 2564 RegisterTerm 2565 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);} 2566 AddressSpaceKeyword 2567 ',' ByteConstExpr 2568 ',' ByteConstExpr 2569 ',' QWordConstExpr 2570 OptionalAccessSize 2571 OptionalNameString_Last 2572 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);} 2573 | PARSEOP_REGISTER '(' 2574 error ')' {$$ = AslDoError(); yyclearin;} 2575 ; 2576 2577 SpiSerialBusTerm 2578 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);} 2579 WordConstExpr /* 04: DeviceSelection */ 2580 OptionalDevicePolarity /* 05: DevicePolarity */ 2581 OptionalWireMode /* 06: WireMode */ 2582 ',' ByteConstExpr /* 08: DataBitLength */ 2583 OptionalSlaveMode /* 09: SlaveMode */ 2584 ',' DWordConstExpr /* 11: ConnectionSpeed */ 2585 ',' ClockPolarityKeyword /* 13: ClockPolarity */ 2586 ',' ClockPhaseKeyword /* 15: ClockPhase */ 2587 ',' StringData /* 17: ResourceSource */ 2588 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 2589 OptionalResourceType /* 19: ResourceType */ 2590 OptionalNameString /* 20: DescriptorName */ 2591 OptionalBuffer_Last /* 21: VendorData */ 2592 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);} 2593 | PARSEOP_SPI_SERIALBUS '(' 2594 error ')' {$$ = AslDoError(); yyclearin;} 2595 ; 2596 2597 StartDependentFnNoPriTerm 2598 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);} 2599 ')' '{' 2600 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);} 2601 | PARSEOP_STARTDEPENDENTFN_NOPRI '(' 2602 error ')' {$$ = AslDoError(); yyclearin;} 2603 ; 2604 2605 StartDependentFnTerm 2606 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);} 2607 ByteConstExpr 2608 ',' ByteConstExpr 2609 ')' '{' 2610 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);} 2611 | PARSEOP_STARTDEPENDENTFN '(' 2612 error ')' {$$ = AslDoError(); yyclearin;} 2613 ; 2614 2615 UartSerialBusTerm 2616 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);} 2617 DWordConstExpr /* 04: ConnectionSpeed */ 2618 OptionalBitsPerByte /* 05: BitsPerByte */ 2619 OptionalStopBits /* 06: StopBits */ 2620 ',' ByteConstExpr /* 08: LinesInUse */ 2621 OptionalEndian /* 09: Endianess */ 2622 OptionalParityType /* 10: Parity */ 2623 OptionalFlowControl /* 11: FlowControl */ 2624 ',' WordConstExpr /* 13: Rx BufferSize */ 2625 ',' WordConstExpr /* 15: Tx BufferSize */ 2626 ',' StringData /* 17: ResourceSource */ 2627 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 2628 OptionalResourceType /* 19: ResourceType */ 2629 OptionalNameString /* 20: DescriptorName */ 2630 OptionalBuffer_Last /* 21: VendorData */ 2631 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);} 2632 | PARSEOP_UART_SERIALBUS '(' 2633 error ')' {$$ = AslDoError(); yyclearin;} 2634 ; 2635 2636 VendorLongTerm 2637 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);} 2638 OptionalNameString_First 2639 ')' '{' 2640 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2641 | PARSEOP_VENDORLONG '(' 2642 error ')' {$$ = AslDoError(); yyclearin;} 2643 ; 2644 2645 VendorShortTerm 2646 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);} 2647 OptionalNameString_First 2648 ')' '{' 2649 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 2650 | PARSEOP_VENDORSHORT '(' 2651 error ')' {$$ = AslDoError(); yyclearin;} 2652 ; 2653 2654 WordBusNumberTerm 2655 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);} 2656 OptionalResourceType_First 2657 OptionalMinType 2658 OptionalMaxType 2659 OptionalDecodeType 2660 ',' WordConstExpr 2661 ',' WordConstExpr 2662 ',' WordConstExpr 2663 ',' WordConstExpr 2664 ',' WordConstExpr 2665 OptionalByteConstExpr 2666 OptionalStringData 2667 OptionalNameString_Last 2668 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);} 2669 | PARSEOP_WORDBUSNUMBER '(' 2670 error ')' {$$ = AslDoError(); yyclearin;} 2671 ; 2672 2673 WordIOTerm 2674 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);} 2675 OptionalResourceType_First 2676 OptionalMinType 2677 OptionalMaxType 2678 OptionalDecodeType 2679 OptionalRangeType 2680 ',' WordConstExpr 2681 ',' WordConstExpr 2682 ',' WordConstExpr 2683 ',' WordConstExpr 2684 ',' WordConstExpr 2685 OptionalByteConstExpr 2686 OptionalStringData 2687 OptionalNameString 2688 OptionalType 2689 OptionalTranslationType_Last 2690 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 2691 | PARSEOP_WORDIO '(' 2692 error ')' {$$ = AslDoError(); yyclearin;} 2693 ; 2694 2695 WordSpaceTerm 2696 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);} 2697 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 2698 OptionalResourceType 2699 OptionalDecodeType 2700 OptionalMinType 2701 OptionalMaxType 2702 ',' ByteConstExpr 2703 ',' WordConstExpr 2704 ',' WordConstExpr 2705 ',' WordConstExpr 2706 ',' WordConstExpr 2707 ',' WordConstExpr 2708 OptionalByteConstExpr 2709 OptionalStringData 2710 OptionalNameString_Last 2711 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 2712 | PARSEOP_WORDSPACE '(' 2713 error ')' {$$ = AslDoError(); yyclearin;} 2714 ; 2715 2716 2717 /******* Object References ***********************************************/ 2718 2719 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */ 2720 2721 NameString 2722 : NameSeg {} 2723 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2724 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");} 2725 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");} 2726 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");} 2727 ; 2728 2729 NameSeg 2730 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2731 ; 2732 2733 2734 /******* Helper rules ****************************************************/ 2735 2736 2737 AmlPackageLengthTerm 2738 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} 2739 ; 2740 2741 NameStringItem 2742 : ',' NameString {$$ = $2;} 2743 | ',' error {$$ = AslDoError (); yyclearin;} 2744 ; 2745 2746 TermArgItem 2747 : ',' TermArg {$$ = $2;} 2748 | ',' error {$$ = AslDoError (); yyclearin;} 2749 ; 2750 2751 OptionalBusMasterKeyword 2752 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2753 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2754 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} 2755 ; 2756 2757 OptionalAccessAttribTerm 2758 : {$$ = NULL;} 2759 | ',' {$$ = NULL;} 2760 | ',' ByteConstExpr {$$ = $2;} 2761 | ',' AccessAttribKeyword {$$ = $2;} 2762 ; 2763 2764 OptionalAccessSize 2765 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2766 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2767 | ',' ByteConstExpr {$$ = $2;} 2768 ; 2769 2770 OptionalAddressingMode 2771 : ',' {$$ = NULL;} 2772 | ',' AddressingModeKeyword {$$ = $2;} 2773 ; 2774 2775 OptionalAddressRange 2776 : {$$ = NULL;} 2777 | ',' {$$ = NULL;} 2778 | ',' AddressKeyword {$$ = $2;} 2779 ; 2780 2781 OptionalBitsPerByte 2782 : ',' {$$ = NULL;} 2783 | ',' BitsPerByteKeyword {$$ = $2;} 2784 ; 2785 2786 OptionalBuffer_Last 2787 : {$$ = NULL;} 2788 | ',' {$$ = NULL;} 2789 | ',' DataBufferTerm {$$ = $2;} 2790 ; 2791 2792 OptionalByteConstExpr 2793 : {$$ = NULL;} 2794 | ',' {$$ = NULL;} 2795 | ',' ByteConstExpr {$$ = $2;} 2796 ; 2797 2798 OptionalDecodeType 2799 : ',' {$$ = NULL;} 2800 | ',' DecodeKeyword {$$ = $2;} 2801 ; 2802 2803 OptionalDevicePolarity 2804 : ',' {$$ = NULL;} 2805 | ',' DevicePolarityKeyword {$$ = $2;} 2806 ; 2807 2808 OptionalDWordConstExpr 2809 : {$$ = NULL;} 2810 | ',' {$$ = NULL;} 2811 | ',' DWordConstExpr {$$ = $2;} 2812 ; 2813 2814 OptionalEndian 2815 : ',' {$$ = NULL;} 2816 | ',' EndianKeyword {$$ = $2;} 2817 ; 2818 2819 OptionalFlowControl 2820 : ',' {$$ = NULL;} 2821 | ',' FlowControlKeyword {$$ = $2;} 2822 ; 2823 2824 OptionalIoRestriction 2825 : ',' {$$ = NULL;} 2826 | ',' IoRestrictionKeyword {$$ = $2;} 2827 ; 2828 2829 OptionalListString 2830 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 2831 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 2832 | ',' TermArg {$$ = $2;} 2833 ; 2834 2835 OptionalMaxType 2836 : ',' {$$ = NULL;} 2837 | ',' MaxKeyword {$$ = $2;} 2838 ; 2839 2840 OptionalMemType 2841 : ',' {$$ = NULL;} 2842 | ',' MemTypeKeyword {$$ = $2;} 2843 ; 2844 2845 OptionalMinType 2846 : ',' {$$ = NULL;} 2847 | ',' MinKeyword {$$ = $2;} 2848 ; 2849 2850 OptionalNameString 2851 : {$$ = NULL;} 2852 | ',' {$$ = NULL;} 2853 | ',' NameString {$$ = $2;} 2854 ; 2855 2856 OptionalNameString_Last 2857 : {$$ = NULL;} 2858 | ',' {$$ = NULL;} 2859 | ',' NameString {$$ = $2;} 2860 ; 2861 2862 OptionalNameString_First 2863 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} 2864 | NameString {$$ = $1;} 2865 ; 2866 2867 OptionalObjectTypeKeyword 2868 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 2869 | ',' ObjectTypeKeyword {$$ = $2;} 2870 ; 2871 2872 OptionalParityType 2873 : ',' {$$ = NULL;} 2874 | ',' ParityTypeKeyword {$$ = $2;} 2875 ; 2876 2877 OptionalQWordConstExpr 2878 : {$$ = NULL;} 2879 | ',' {$$ = NULL;} 2880 | ',' QWordConstExpr {$$ = $2;} 2881 ; 2882 2883 OptionalRangeType 2884 : ',' {$$ = NULL;} 2885 | ',' RangeTypeKeyword {$$ = $2;} 2886 ; 2887 2888 OptionalReadWriteKeyword 2889 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2890 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2891 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} 2892 ; 2893 2894 OptionalReference 2895 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2896 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2897 | ',' TermArg {$$ = $2;} 2898 ; 2899 2900 OptionalResourceType_First 2901 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2902 | ResourceTypeKeyword {$$ = $1;} 2903 ; 2904 2905 OptionalResourceType 2906 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2907 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2908 | ',' ResourceTypeKeyword {$$ = $2;} 2909 ; 2910 2911 OptionalReturnArg 2912 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ 2913 | TermArg {$$ = $1;} 2914 ; 2915 2916 OptionalSerializeRuleKeyword 2917 : {$$ = NULL;} 2918 | ',' {$$ = NULL;} 2919 | ',' SerializeRuleKeyword {$$ = $2;} 2920 ; 2921 2922 OptionalSlaveMode 2923 : ',' {$$ = NULL;} 2924 | ',' SlaveModeKeyword {$$ = $2;} 2925 ; 2926 2927 OptionalShareType 2928 : {$$ = NULL;} 2929 | ',' {$$ = NULL;} 2930 | ',' ShareTypeKeyword {$$ = $2;} 2931 ; 2932 2933 OptionalShareType_First 2934 : {$$ = NULL;} 2935 | ShareTypeKeyword {$$ = $1;} 2936 ; 2937 2938 OptionalStopBits 2939 : ',' {$$ = NULL;} 2940 | ',' StopBitsKeyword {$$ = $2;} 2941 ; 2942 2943 OptionalStringData 2944 : {$$ = NULL;} 2945 | ',' {$$ = NULL;} 2946 | ',' StringData {$$ = $2;} 2947 ; 2948 2949 OptionalTermArg 2950 : {$$ = NULL;} 2951 | TermArg {$$ = $1;} 2952 ; 2953 2954 OptionalType 2955 : {$$ = NULL;} 2956 | ',' {$$ = NULL;} 2957 | ',' TypeKeyword {$$ = $2;} 2958 ; 2959 2960 OptionalType_Last 2961 : {$$ = NULL;} 2962 | ',' {$$ = NULL;} 2963 | ',' TypeKeyword {$$ = $2;} 2964 ; 2965 2966 OptionalTranslationType_Last 2967 : {$$ = NULL;} 2968 | ',' {$$ = NULL;} 2969 | ',' TranslationKeyword {$$ = $2;} 2970 ; 2971 2972 OptionalWireMode 2973 : ',' {$$ = NULL;} 2974 | ',' WireModeKeyword {$$ = $2;} 2975 ; 2976 2977 OptionalWordConst 2978 : {$$ = NULL;} 2979 | WordConst {$$ = $1;} 2980 ; 2981 2982 OptionalWordConstExpr 2983 : ',' {$$ = NULL;} 2984 | ',' WordConstExpr {$$ = $2;} 2985 ; 2986 2987 OptionalXferSize 2988 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2989 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2990 | ',' XferSizeKeyword {$$ = $2;} 2991 ; 2992