aslrules.y revision 281687
1NoEcho(' 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 */ 59ASLCode 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 */ 83DefinitionBlockTerm 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 */ 126Expression 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 189EqualsTerm 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 240TermList 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 248Term 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 259CompilerDirective 260 : IncludeTerm {} 261 | ExternalTerm {} 262 ; 263 264ObjectList 265 : {$$ = NULL;} 266 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} 267 | error {$$ = AslDoError(); yyclearin;} 268 ; 269 270Object 271 : CompilerDirective {} 272 | NamedObject {} 273 | NameSpaceModifier {} 274 ; 275 276DataObject 277 : BufferData {} 278 | PackageData {} 279 | IntegerData {} 280 | StringData {} 281 ; 282 283BufferData 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 290PackageData 291 : PackageTerm {} 292 ; 293 294IntegerData 295 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 296 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 297 | Integer {} 298 | ConstTerm {} 299 ; 300 301StringData 302 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 303 | String {} 304 ; 305 306NamedObject 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 328NameSpaceModifier 329 : AliasTerm {} 330 | NameTerm {} 331 | ScopeTerm {} 332 ; 333 334MethodInvocationTerm 335 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} 336 ArgList ')' {$$ = TrLinkChildNode ($1,$4);} 337 ; 338 339ArgList 340 : {$$ = NULL;} 341 | TermArg 342 | ArgList ',' /* Allows a trailing comma at list end */ 343 | ArgList ',' 344 TermArg {$$ = TrLinkPeerNode ($1,$3);} 345 ; 346 347/* 348Removed 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 356TermArg 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 364Target 365 : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 366 | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 367 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 368 ; 369 370RequiredTarget 371 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 372 ; 373 374SimpleTarget 375 : NameString {} 376 | LocalTerm {} 377 | ArgTerm {} 378 ; 379 380/* Rules for specifying the type of one method argument or return value */ 381 382ParameterTypePackage 383 : {$$ = NULL;} 384 | ObjectTypeKeyword {$$ = $1;} 385 | ParameterTypePackage ',' 386 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} 387 ; 388 389ParameterTypePackageList 390 : {$$ = NULL;} 391 | ObjectTypeKeyword {$$ = $1;} 392 | '{' ParameterTypePackage '}' {$$ = $2;} 393 ; 394 395OptionalParameterTypePackage 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 402ParameterTypesPackage 403 : ParameterTypePackageList {$$ = $1;} 404 | ParameterTypesPackage ',' 405 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} 406 ; 407 408ParameterTypesPackageList 409 : {$$ = NULL;} 410 | ObjectTypeKeyword {$$ = $1;} 411 | '{' ParameterTypesPackage '}' {$$ = $2;} 412 ; 413 414OptionalParameterTypesPackage 415 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 416 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 417 ; 418 419 420/* Opcode types */ 421 422Type1Opcode 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 442Type2Opcode 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 461Type2IntegerOpcode /* "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 497Type2StringOpcode /* "Type4" Opcodes */ 498 : ToDecimalStringTerm {} 499 | ToHexStringTerm {} 500 | ToStringTerm {} 501 ; 502 503Type2BufferOpcode /* "Type5" Opcodes */ 504 : ToBufferTerm {} 505 | ConcatResTerm {} 506 ; 507 508Type2BufferOrStringOpcode 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 519Type3Opcode 520 : EISAIDTerm {} 521 ; 522 523/* Obsolete 524Type4Opcode 525 : ConcatTerm {} 526 | ToDecimalStringTerm {} 527 | ToHexStringTerm {} 528 | MidTerm {} 529 | ToStringTerm {} 530 ; 531*/ 532 533 534Type5Opcode 535 : ResourceTemplateTerm {} 536 | UnicodeTerm {} 537 | ToPLDTerm {} 538 | ToUUIDTerm {} 539 ; 540 541Type6Opcode 542 : RefOfTerm {} 543 | DerefOfTerm {} 544 | IndexTerm {} 545 | MethodInvocationTerm {} 546 ; 547 548IncludeTerm 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 555IncludeEndTerm 556 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} 557 ; 558 559ExternalTerm 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 574BankFieldTerm 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 588FieldUnitList 589 : {$$ = NULL;} 590 | FieldUnit 591 | FieldUnitList ',' /* Allows a trailing comma at list end */ 592 | FieldUnitList ',' 593 FieldUnit {$$ = TrLinkPeerNode ($1,$3);} 594 ; 595 596FieldUnit 597 : FieldUnitEntry {} 598 | OffsetTerm {} 599 | AccessAsTerm {} 600 | ConnectionTerm {} 601 ; 602 603FieldUnitEntry 604 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} 605 | NameSeg ',' 606 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} 607 ; 608 609OffsetTerm 610 : PARSEOP_OFFSET '(' 611 AmlPackageLengthTerm 612 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} 613 | PARSEOP_OFFSET '(' 614 error ')' {$$ = AslDoError(); yyclearin;} 615 ; 616 617AccessAsTerm 618 : PARSEOP_ACCESSAS '(' 619 AccessTypeKeyword 620 OptionalAccessAttribTerm 621 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} 622 | PARSEOP_ACCESSAS '(' 623 error ')' {$$ = AslDoError(); yyclearin;} 624 ; 625 626ConnectionTerm 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 641CreateBitFieldTerm 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 651CreateByteFieldTerm 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 661CreateDWordFieldTerm 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 671CreateFieldTerm 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 682CreateQWordFieldTerm 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 692CreateWordFieldTerm 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 702DataRegionTerm 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 713DeviceTerm 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 722EventTerm 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 730FieldTerm 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 742FunctionTerm 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 756IndexFieldTerm 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 769MethodTerm 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 783MutexTerm 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 792OpRegionTerm 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 803OpRegionSpaceIdTerm 804 : RegionSpaceKeyword {} 805 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 806 ; 807 808PowerResTerm 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 819ProcessorTerm 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 831ThermalZoneTerm 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 844AliasTerm 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 853NameTerm 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 862ScopeTerm 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 875BreakTerm 876 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} 877 ; 878 879BreakPointTerm 880 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} 881 ; 882 883ContinueTerm 884 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} 885 ; 886 887FatalTerm 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 897IfElseTerm 898 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} 899 ; 900 901IfTerm 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 911ElseTerm 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 936LoadTerm 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 945NoOpTerm 946 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} 947 ; 948 949NotifyTerm 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 958ReleaseTerm 959 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);} 960 SuperName 961 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 962 | PARSEOP_RELEASE '(' 963 error ')' {$$ = AslDoError(); yyclearin;} 964 ; 965 966ResetTerm 967 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);} 968 SuperName 969 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 970 | PARSEOP_RESET '(' 971 error ')' {$$ = AslDoError(); yyclearin;} 972 ; 973 974ReturnTerm 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 983SignalTerm 984 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);} 985 SuperName 986 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 987 | PARSEOP_SIGNAL '(' 988 error ')' {$$ = AslDoError(); yyclearin;} 989 ; 990 991SleepTerm 992 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);} 993 TermArg 994 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 995 | PARSEOP_SLEEP '(' 996 error ')' {$$ = AslDoError(); yyclearin;} 997 ; 998 999StallTerm 1000 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);} 1001 TermArg 1002 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1003 | PARSEOP_STALL '(' 1004 error ')' {$$ = AslDoError(); yyclearin;} 1005 ; 1006 1007SwitchTerm 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 1021CaseDefaultTermList 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/* 1033CaseDefaultTermList 1034 : {$$ = NULL;} 1035 | CaseTermList 1036 DefaultTerm 1037 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} 1038 | CaseTermList 1039 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 1040 ; 1041 1042CaseTermList 1043 : {$$ = NULL;} 1044 | CaseTerm {} 1045 | CaseTermList 1046 CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 1047 ; 1048*/ 1049 1050CaseTerm 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 1059DefaultTerm 1060 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);} 1061 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 1062 | PARSEOP_DEFAULT '{' 1063 error '}' {$$ = AslDoError(); yyclearin;} 1064 ; 1065 1066UnloadTerm 1067 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);} 1068 SuperName 1069 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1070 | PARSEOP_UNLOAD '(' 1071 error ')' {$$ = AslDoError(); yyclearin;} 1072 ; 1073 1074WhileTerm 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 1086AcquireTerm 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 1095AddTerm 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 1105AndTerm 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 1115ConcatTerm 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 1125ConcatResTerm 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 1135CondRefOfTerm 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 1144CopyObjectTerm 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 1153DecTerm 1154 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 1155 SuperName 1156 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1157 | PARSEOP_DECREMENT '(' 1158 error ')' {$$ = AslDoError(); yyclearin;} 1159 ; 1160 1161DerefOfTerm 1162 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);} 1163 TermArg 1164 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1165 | PARSEOP_DEREFOF '(' 1166 error ')' {$$ = AslDoError(); yyclearin;} 1167 ; 1168 1169DivideTerm 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 1180FindSetLeftBitTerm 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 1189FindSetRightBitTerm 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 1198FromBCDTerm 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 1207IncTerm 1208 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 1209 SuperName 1210 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1211 | PARSEOP_INCREMENT '(' 1212 error ')' {$$ = AslDoError(); yyclearin;} 1213 ; 1214 1215IndexTerm 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 1225LAndTerm 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 1234LEqualTerm 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 1243LGreaterTerm 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 1252LGreaterEqualTerm 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 1261LLessTerm 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 1270LLessEqualTerm 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 1279LNotTerm 1280 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 1281 TermArg 1282 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1283 | PARSEOP_LNOT '(' 1284 error ')' {$$ = AslDoError(); yyclearin;} 1285 ; 1286 1287LNotEqualTerm 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 1296LoadTableTerm 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 1309LOrTerm 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 1318MatchTerm 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 1331MidTerm 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 1342ModTerm 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 1352MultiplyTerm 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 1362NAndTerm 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 1372NOrTerm 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 1382NotTerm 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 1391ObjectTypeTerm 1392 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} 1393 ObjectTypeName 1394 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1395 | PARSEOP_OBJECTTYPE '(' 1396 error ')' {$$ = AslDoError(); yyclearin;} 1397 ; 1398 1399OrTerm 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 */ 1413RefOfTerm 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 1421ShiftLeftTerm 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 1431ShiftRightTerm 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 1441SizeOfTerm 1442 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);} 1443 SuperName 1444 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1445 | PARSEOP_SIZEOF '(' 1446 error ')' {$$ = AslDoError(); yyclearin;} 1447 ; 1448 1449StoreTerm 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 1458SubtractTerm 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 1468TimerTerm 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 1476ToBCDTerm 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 1485ToBufferTerm 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 1494ToDecimalStringTerm 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 1503ToHexStringTerm 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 1512ToIntegerTerm 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 1521PldKeyword 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 1552PldKeywordList 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 1567ToPLDTerm 1568 : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);} 1569 PldKeywordList 1570 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1571 | PARSEOP_TOPLD '(' 1572 error ')' {$$ = AslDoError(); yyclearin;} 1573 ; 1574 1575PrintfArgList 1576 : {$$ = NULL;} 1577 | TermArg {$$ = $1;} 1578 | PrintfArgList ',' 1579 TermArg {$$ = TrLinkPeerNode ($1, $3);} 1580 ; 1581 1582PrintfTerm 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 1591FprintfTerm 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 1601ToStringTerm 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 1611ToUUIDTerm 1612 : PARSEOP_TOUUID '(' 1613 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} 1614 | PARSEOP_TOUUID '(' 1615 error ')' {$$ = AslDoError(); yyclearin;} 1616 ; 1617 1618WaitTerm 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 1627XOrTerm 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 1641AccessAttribKeyword 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 1660AccessTypeKeyword 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 1669AddressingModeKeyword 1670 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} 1671 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} 1672 ; 1673 1674AddressKeyword 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 1681AddressSpaceKeyword 1682 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} 1683 | RegionSpaceKeyword {} 1684 ; 1685 1686BitsPerByteKeyword 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 1694ClockPhaseKeyword 1695 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} 1696 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} 1697 ; 1698 1699ClockPolarityKeyword 1700 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} 1701 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} 1702 ; 1703 1704DecodeKeyword 1705 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} 1706 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} 1707 ; 1708 1709DevicePolarityKeyword 1710 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} 1711 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} 1712 ; 1713 1714DMATypeKeyword 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 1721EndianKeyword 1722 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} 1723 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} 1724 ; 1725 1726FlowControlKeyword 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 1732InterruptLevel 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 1738InterruptTypeKeyword 1739 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} 1740 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} 1741 ; 1742 1743IODecodeKeyword 1744 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} 1745 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} 1746 ; 1747 1748IoRestrictionKeyword 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 1755LockRuleKeyword 1756 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} 1757 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} 1758 ; 1759 1760MatchOpKeyword 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 1769MaxKeyword 1770 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} 1771 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} 1772 ; 1773 1774MemTypeKeyword 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 1781MinKeyword 1782 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} 1783 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} 1784 ; 1785 1786ObjectTypeKeyword 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 1805ParityTypeKeyword 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 1813PinConfigByte 1814 : PinConfigKeyword {$$ = $1;} 1815 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 1816 ; 1817 1818PinConfigKeyword 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 1825RangeTypeKeyword 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 1831RegionSpaceKeyword 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 1846ResourceTypeKeyword 1847 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1848 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} 1849 ; 1850 1851SerializeRuleKeyword 1852 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} 1853 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} 1854 ; 1855 1856ShareTypeKeyword 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 1863SlaveModeKeyword 1864 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} 1865 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} 1866 ; 1867 1868StopBitsKeyword 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 1875TranslationKeyword 1876 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} 1877 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} 1878 ; 1879 1880TypeKeyword 1881 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} 1882 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} 1883 ; 1884 1885UpdateRuleKeyword 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 1891WireModeKeyword 1892 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} 1893 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} 1894 ; 1895 1896XferSizeKeyword 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 1905XferTypeKeyword 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 1915SuperName 1916 : NameString {} 1917 | ArgTerm {} 1918 | LocalTerm {} 1919 | DebugTerm {} 1920 | Type6Opcode {} 1921 1922/* For ObjectType: SuperName except for MethodInvocationTerm */ 1923 1924ObjectTypeName 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 1936ArgTerm 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 1946LocalTerm 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 1957DebugTerm 1958 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} 1959 ; 1960 1961 1962ByteConst 1963 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 1964 ; 1965 1966WordConst 1967 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 1968 ; 1969 1970DWordConst 1971 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 1972 ; 1973 1974QWordConst 1975 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 1976 ; 1977 1978Integer 1979 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} 1980 ; 1981 1982String 1983 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} 1984 ; 1985 1986ConstTerm 1987 : ConstExprTerm {} 1988 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} 1989 ; 1990 1991ConstExprTerm 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 */ 2009ByteConstExpr 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 2016WordConstExpr 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 2023DWordConstExpr 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 2030QWordConstExpr 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 2039OptionalCount 2040 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 2041 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 2042 | ',' TermArg {$$ = $2;} 2043 ; 2044 2045BufferTerm 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 2054BufferTermData 2055 : ByteList {} 2056 | StringData {} 2057 ; 2058 2059ByteList 2060 : {$$ = NULL;} 2061 | ByteConstExpr 2062 | ByteList ',' /* Allows a trailing comma at list end */ 2063 | ByteList ',' 2064 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} 2065 ; 2066 2067DataBufferTerm 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 2076DWordList 2077 : {$$ = NULL;} 2078 | DWordConstExpr 2079 | DWordList ',' /* Allows a trailing comma at list end */ 2080 | DWordList ',' 2081 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} 2082 ; 2083 2084PackageTerm 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 2093PackageList 2094 : {$$ = NULL;} 2095 | PackageElement 2096 | PackageList ',' /* Allows a trailing comma at list end */ 2097 | PackageList ',' 2098 PackageElement {$$ = TrLinkPeerNode ($1,$3);} 2099 ; 2100 2101PackageElement 2102 : DataObject {} 2103 | NameString {} 2104 ; 2105 2106VarPackageLengthTerm 2107 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 2108 | TermArg {$$ = $1;} 2109 ; 2110 2111 2112/******* Macros ***********************************************/ 2113 2114 2115EISAIDTerm 2116 : PARSEOP_EISAID '(' 2117 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} 2118 | PARSEOP_EISAID '(' 2119 error ')' {$$ = AslDoError(); yyclearin;} 2120 ; 2121 2122UnicodeTerm 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 */ 2138ResourceTemplateTerm 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 2148ResourceMacroList 2149 : {$$ = NULL;} 2150 | ResourceMacroList 2151 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} 2152 ; 2153 2154ResourceMacroTerm 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 2190DMATerm 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 2202DWordIOTerm 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 2224DWordMemoryTerm 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 2247DWordSpaceTerm 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 2269EndDependentFnTerm 2270 : PARSEOP_ENDDEPENDENTFN '(' 2271 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} 2272 | PARSEOP_ENDDEPENDENTFN '(' 2273 error ')' {$$ = AslDoError(); yyclearin;} 2274 ; 2275 2276ExtendedIOTerm 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 2297ExtendedMemoryTerm 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 2319ExtendedSpaceTerm 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 2339FixedDmaTerm 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 2350FixedIOTerm 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 2360GpioIntTerm 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 2378GpioIoTerm 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 2396I2cSerialBusTerm 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 2412InterruptTerm 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 2427IOTerm 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 2440IRQNoFlagsTerm 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 2449IRQTerm 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 2461Memory24Term 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 2474Memory32FixedTerm 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 2485Memory32Term 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 2498QWordIOTerm 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 2520QWordMemoryTerm 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 2543QWordSpaceTerm 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 2564RegisterTerm 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 2577SpiSerialBusTerm 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 2597StartDependentFnNoPriTerm 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 2605StartDependentFnTerm 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 2615UartSerialBusTerm 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 2636VendorLongTerm 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 2645VendorShortTerm 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 2654WordBusNumberTerm 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 2673WordIOTerm 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 2695WordSpaceTerm 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 2721NameString 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 2729NameSeg 2730 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} 2731 ; 2732 2733 2734/******* Helper rules ****************************************************/ 2735 2736 2737AmlPackageLengthTerm 2738 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} 2739 ; 2740 2741NameStringItem 2742 : ',' NameString {$$ = $2;} 2743 | ',' error {$$ = AslDoError (); yyclearin;} 2744 ; 2745 2746TermArgItem 2747 : ',' TermArg {$$ = $2;} 2748 | ',' error {$$ = AslDoError (); yyclearin;} 2749 ; 2750 2751OptionalBusMasterKeyword 2752 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2753 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 2754 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} 2755 ; 2756 2757OptionalAccessAttribTerm 2758 : {$$ = NULL;} 2759 | ',' {$$ = NULL;} 2760 | ',' ByteConstExpr {$$ = $2;} 2761 | ',' AccessAttribKeyword {$$ = $2;} 2762 ; 2763 2764OptionalAccessSize 2765 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2766 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 2767 | ',' ByteConstExpr {$$ = $2;} 2768 ; 2769 2770OptionalAddressingMode 2771 : ',' {$$ = NULL;} 2772 | ',' AddressingModeKeyword {$$ = $2;} 2773 ; 2774 2775OptionalAddressRange 2776 : {$$ = NULL;} 2777 | ',' {$$ = NULL;} 2778 | ',' AddressKeyword {$$ = $2;} 2779 ; 2780 2781OptionalBitsPerByte 2782 : ',' {$$ = NULL;} 2783 | ',' BitsPerByteKeyword {$$ = $2;} 2784 ; 2785 2786OptionalBuffer_Last 2787 : {$$ = NULL;} 2788 | ',' {$$ = NULL;} 2789 | ',' DataBufferTerm {$$ = $2;} 2790 ; 2791 2792OptionalByteConstExpr 2793 : {$$ = NULL;} 2794 | ',' {$$ = NULL;} 2795 | ',' ByteConstExpr {$$ = $2;} 2796 ; 2797 2798OptionalDecodeType 2799 : ',' {$$ = NULL;} 2800 | ',' DecodeKeyword {$$ = $2;} 2801 ; 2802 2803OptionalDevicePolarity 2804 : ',' {$$ = NULL;} 2805 | ',' DevicePolarityKeyword {$$ = $2;} 2806 ; 2807 2808OptionalDWordConstExpr 2809 : {$$ = NULL;} 2810 | ',' {$$ = NULL;} 2811 | ',' DWordConstExpr {$$ = $2;} 2812 ; 2813 2814OptionalEndian 2815 : ',' {$$ = NULL;} 2816 | ',' EndianKeyword {$$ = $2;} 2817 ; 2818 2819OptionalFlowControl 2820 : ',' {$$ = NULL;} 2821 | ',' FlowControlKeyword {$$ = $2;} 2822 ; 2823 2824OptionalIoRestriction 2825 : ',' {$$ = NULL;} 2826 | ',' IoRestrictionKeyword {$$ = $2;} 2827 ; 2828 2829OptionalListString 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 2835OptionalMaxType 2836 : ',' {$$ = NULL;} 2837 | ',' MaxKeyword {$$ = $2;} 2838 ; 2839 2840OptionalMemType 2841 : ',' {$$ = NULL;} 2842 | ',' MemTypeKeyword {$$ = $2;} 2843 ; 2844 2845OptionalMinType 2846 : ',' {$$ = NULL;} 2847 | ',' MinKeyword {$$ = $2;} 2848 ; 2849 2850OptionalNameString 2851 : {$$ = NULL;} 2852 | ',' {$$ = NULL;} 2853 | ',' NameString {$$ = $2;} 2854 ; 2855 2856OptionalNameString_Last 2857 : {$$ = NULL;} 2858 | ',' {$$ = NULL;} 2859 | ',' NameString {$$ = $2;} 2860 ; 2861 2862OptionalNameString_First 2863 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} 2864 | NameString {$$ = $1;} 2865 ; 2866 2867OptionalObjectTypeKeyword 2868 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 2869 | ',' ObjectTypeKeyword {$$ = $2;} 2870 ; 2871 2872OptionalParityType 2873 : ',' {$$ = NULL;} 2874 | ',' ParityTypeKeyword {$$ = $2;} 2875 ; 2876 2877OptionalQWordConstExpr 2878 : {$$ = NULL;} 2879 | ',' {$$ = NULL;} 2880 | ',' QWordConstExpr {$$ = $2;} 2881 ; 2882 2883OptionalRangeType 2884 : ',' {$$ = NULL;} 2885 | ',' RangeTypeKeyword {$$ = $2;} 2886 ; 2887 2888OptionalReadWriteKeyword 2889 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2890 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 2891 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} 2892 ; 2893 2894OptionalReference 2895 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2896 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 2897 | ',' TermArg {$$ = $2;} 2898 ; 2899 2900OptionalResourceType_First 2901 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2902 | ResourceTypeKeyword {$$ = $1;} 2903 ; 2904 2905OptionalResourceType 2906 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2907 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 2908 | ',' ResourceTypeKeyword {$$ = $2;} 2909 ; 2910 2911OptionalReturnArg 2912 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ 2913 | TermArg {$$ = $1;} 2914 ; 2915 2916OptionalSerializeRuleKeyword 2917 : {$$ = NULL;} 2918 | ',' {$$ = NULL;} 2919 | ',' SerializeRuleKeyword {$$ = $2;} 2920 ; 2921 2922OptionalSlaveMode 2923 : ',' {$$ = NULL;} 2924 | ',' SlaveModeKeyword {$$ = $2;} 2925 ; 2926 2927OptionalShareType 2928 : {$$ = NULL;} 2929 | ',' {$$ = NULL;} 2930 | ',' ShareTypeKeyword {$$ = $2;} 2931 ; 2932 2933OptionalShareType_First 2934 : {$$ = NULL;} 2935 | ShareTypeKeyword {$$ = $1;} 2936 ; 2937 2938OptionalStopBits 2939 : ',' {$$ = NULL;} 2940 | ',' StopBitsKeyword {$$ = $2;} 2941 ; 2942 2943OptionalStringData 2944 : {$$ = NULL;} 2945 | ',' {$$ = NULL;} 2946 | ',' StringData {$$ = $2;} 2947 ; 2948 2949OptionalTermArg 2950 : {$$ = NULL;} 2951 | TermArg {$$ = $1;} 2952 ; 2953 2954OptionalType 2955 : {$$ = NULL;} 2956 | ',' {$$ = NULL;} 2957 | ',' TypeKeyword {$$ = $2;} 2958 ; 2959 2960OptionalType_Last 2961 : {$$ = NULL;} 2962 | ',' {$$ = NULL;} 2963 | ',' TypeKeyword {$$ = $2;} 2964 ; 2965 2966OptionalTranslationType_Last 2967 : {$$ = NULL;} 2968 | ',' {$$ = NULL;} 2969 | ',' TranslationKeyword {$$ = $2;} 2970 ; 2971 2972OptionalWireMode 2973 : ',' {$$ = NULL;} 2974 | ',' WireModeKeyword {$$ = $2;} 2975 ; 2976 2977OptionalWordConst 2978 : {$$ = NULL;} 2979 | WordConst {$$ = $1;} 2980 ; 2981 2982OptionalWordConstExpr 2983 : ',' {$$ = NULL;} 2984 | ',' WordConstExpr {$$ = $2;} 2985 ; 2986 2987OptionalXferSize 2988 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2989 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 2990 | ',' XferSizeKeyword {$$ = $2;} 2991 ; 2992