aslrules.y revision 306536
1271440SjkimNoEcho(' 2271440Sjkim/****************************************************************************** 3271440Sjkim * 4306536Sjkim * Module Name: aslrules.y - Main Bison/Yacc production rules 5271440Sjkim * 6271440Sjkim *****************************************************************************/ 7271440Sjkim 8271440Sjkim/* 9306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp. 10271440Sjkim * All rights reserved. 11271440Sjkim * 12271440Sjkim * Redistribution and use in source and binary forms, with or without 13271440Sjkim * modification, are permitted provided that the following conditions 14271440Sjkim * are met: 15271440Sjkim * 1. Redistributions of source code must retain the above copyright 16271440Sjkim * notice, this list of conditions, and the following disclaimer, 17271440Sjkim * without modification. 18271440Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19271440Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 20271440Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 21271440Sjkim * including a substantially similar Disclaimer requirement for further 22271440Sjkim * binary redistribution. 23271440Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 24271440Sjkim * of any contributors may be used to endorse or promote products derived 25271440Sjkim * from this software without specific prior written permission. 26271440Sjkim * 27271440Sjkim * Alternatively, this software may be distributed under the terms of the 28271440Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 29271440Sjkim * Software Foundation. 30271440Sjkim * 31271440Sjkim * NO WARRANTY 32271440Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33271440Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34271440Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35271440Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36271440Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37271440Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38271440Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39271440Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40271440Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41271440Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42271440Sjkim * POSSIBILITY OF SUCH DAMAGES. 43271440Sjkim */ 44271440Sjkim 45271440Sjkim') 46271440Sjkim 47271440Sjkim/******************************************************************************* 48271440Sjkim * 49306536Sjkim * ASL Root and Secondary Terms 50271440Sjkim * 51271440Sjkim ******************************************************************************/ 52271440Sjkim 53271440Sjkim/* 54306536Sjkim * Root term. Allow multiple #line directives before the definition block 55271440Sjkim * to handle output from preprocessors 56271440Sjkim */ 57306536SjkimAslCode 58306536Sjkim : DefinitionBlockList {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);} 59271440Sjkim | error {YYABORT; $$ = NULL;} 60271440Sjkim ; 61271440Sjkim 62271440Sjkim 63271440Sjkim/* 64271440Sjkim * Note concerning support for "module-level code". 65271440Sjkim * 66271440Sjkim * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control 67271440Sjkim * methods (the so-called module-level code.) This support was explicitly 68271440Sjkim * removed in ACPI 2.0, but this type of code continues to be created by 69271440Sjkim * BIOS vendors. In order to support the disassembly and recompilation of 70271440Sjkim * such code (and the porting of ASL code to iASL), iASL supports this 71271440Sjkim * code in violation of the current ACPI specification. 72271440Sjkim * 73271440Sjkim * The grammar change to support module-level code is to revert the 74271440Sjkim * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the 75271440Sjkim * original use of {TermList} instead (see below.) This allows the use 76271440Sjkim * of Type1 and Type2 opcodes at module level. 77306536Sjkim * 78306536Sjkim * 04/2016: The module-level code is now allowed in the following terms: 79306536Sjkim * DeviceTerm, PowerResTerm, ProcessorTerm, ScopeTerm, ThermalZoneTerm. 80306536Sjkim * The ObjectList term is obsolete and has been removed. 81271440Sjkim */ 82271440SjkimDefinitionBlockTerm 83306536Sjkim : PARSEOP_DEFINITION_BLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITION_BLOCK);} 84271440Sjkim String ',' 85271440Sjkim String ',' 86271440Sjkim ByteConst ',' 87271440Sjkim String ',' 88271440Sjkim String ',' 89271440Sjkim DWordConst 90271440Sjkim ')' {TrSetEndLineNumber ($<n>3);} 91271440Sjkim '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);} 92271440Sjkim ; 93271440Sjkim 94306536SjkimDefinitionBlockList 95306536Sjkim : DefinitionBlockTerm 96306536Sjkim | DefinitionBlockTerm 97306536Sjkim DefinitionBlockList {$$ = TrLinkPeerNodes (2, $1,$2);} 98306536Sjkim ; 99281075Sdim 100306536SjkimSuperName 101306536Sjkim : NameString {} 102306536Sjkim | ArgTerm {} 103306536Sjkim | LocalTerm {} 104306536Sjkim | DebugTerm {} 105306536Sjkim | Type6Opcode {} 106281075Sdim 107306536SjkimTarget 108306536Sjkim : {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 109306536Sjkim | ',' {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */ 110306536Sjkim | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 111306536Sjkim ; 112281075Sdim 113306536SjkimTermArg 114306536Sjkim : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 115306536Sjkim | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 116306536Sjkim | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 117306536Sjkim | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 118306536Sjkim | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 119306536Sjkim ; 120281075Sdim 121306536Sjkim/* 122306536Sjkim NOTE: Removed from TermArg due to reduce/reduce conflicts: 123306536Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 124306536Sjkim | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 125306536Sjkim | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 126306536Sjkim | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} 127281075Sdim 128306536Sjkim*/ 129281075Sdim 130306536SjkimMethodInvocationTerm 131306536Sjkim : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} 132306536Sjkim ArgList ')' {$$ = TrLinkChildNode ($1,$4);} 133306536Sjkim ; 134281075Sdim 135306536Sjkim/* OptionalCount must appear before ByteList or an incorrect reduction will result */ 136281075Sdim 137306536SjkimOptionalCount 138306536Sjkim : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 139306536Sjkim | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ 140306536Sjkim | ',' TermArg {$$ = $2;} 141306536Sjkim ; 142281075Sdim 143306536SjkimVarPackageLengthTerm 144306536Sjkim : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 145306536Sjkim | TermArg {$$ = $1;} 146306536Sjkim ; 147281075Sdim 148281075Sdim 149306536Sjkim/******* List Terms **************************************************/ 150306536Sjkim 151306536SjkimArgList 152306536Sjkim : {$$ = NULL;} 153306536Sjkim | TermArg 154306536Sjkim | ArgList ',' /* Allows a trailing comma at list end */ 155306536Sjkim | ArgList ',' 156306536Sjkim TermArg {$$ = TrLinkPeerNode ($1,$3);} 157281075Sdim ; 158281075Sdim 159306536SjkimByteList 160306536Sjkim : {$$ = NULL;} 161306536Sjkim | ByteConstExpr 162306536Sjkim | ByteList ',' /* Allows a trailing comma at list end */ 163306536Sjkim | ByteList ',' 164306536Sjkim ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} 165306536Sjkim ; 166281075Sdim 167306536SjkimDWordList 168306536Sjkim : {$$ = NULL;} 169306536Sjkim | DWordConstExpr 170306536Sjkim | DWordList ',' /* Allows a trailing comma at list end */ 171306536Sjkim | DWordList ',' 172306536Sjkim DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} 173306536Sjkim ; 174281075Sdim 175306536SjkimFieldUnitList 176306536Sjkim : {$$ = NULL;} 177306536Sjkim | FieldUnit 178306536Sjkim | FieldUnitList ',' /* Allows a trailing comma at list end */ 179306536Sjkim | FieldUnitList ',' 180306536Sjkim FieldUnit {$$ = TrLinkPeerNode ($1,$3);} 181306536Sjkim ; 182281075Sdim 183306536SjkimFieldUnit 184306536Sjkim : FieldUnitEntry {} 185306536Sjkim | OffsetTerm {} 186306536Sjkim | AccessAsTerm {} 187306536Sjkim | ConnectionTerm {} 188306536Sjkim ; 189281075Sdim 190306536SjkimFieldUnitEntry 191306536Sjkim : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} 192306536Sjkim | NameSeg ',' 193306536Sjkim AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} 194306536Sjkim ; 195281075Sdim 196306536SjkimObject 197306536Sjkim : CompilerDirective {} 198306536Sjkim | NamedObject {} 199306536Sjkim | NameSpaceModifier {} 200306536Sjkim ; 201281075Sdim 202306536SjkimPackageList 203306536Sjkim : {$$ = NULL;} 204306536Sjkim | PackageElement 205306536Sjkim | PackageList ',' /* Allows a trailing comma at list end */ 206306536Sjkim | PackageList ',' 207306536Sjkim PackageElement {$$ = TrLinkPeerNode ($1,$3);} 208306536Sjkim ; 209281075Sdim 210306536SjkimPackageElement 211306536Sjkim : DataObject {} 212306536Sjkim | NameString {} 213306536Sjkim ; 214281075Sdim 215306536Sjkim /* Rules for specifying the type of one method argument or return value */ 216281075Sdim 217306536SjkimParameterTypePackage 218306536Sjkim : {$$ = NULL;} 219306536Sjkim | ObjectTypeKeyword {$$ = $1;} 220306536Sjkim | ParameterTypePackage ',' 221306536Sjkim ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} 222306536Sjkim ; 223281075Sdim 224306536SjkimParameterTypePackageList 225306536Sjkim : {$$ = NULL;} 226306536Sjkim | ObjectTypeKeyword {$$ = $1;} 227306536Sjkim | '{' ParameterTypePackage '}' {$$ = $2;} 228306536Sjkim ; 229281075Sdim 230306536SjkimOptionalParameterTypePackage 231306536Sjkim : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 232306536Sjkim | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 233306536Sjkim ; 234281075Sdim 235306536Sjkim /* Rules for specifying the types for method arguments */ 236306536Sjkim 237306536SjkimParameterTypesPackage 238306536Sjkim : ParameterTypePackageList {$$ = $1;} 239306536Sjkim | ParameterTypesPackage ',' 240306536Sjkim ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} 241281075Sdim ; 242281075Sdim 243306536SjkimParameterTypesPackageList 244306536Sjkim : {$$ = NULL;} 245306536Sjkim | ObjectTypeKeyword {$$ = $1;} 246306536Sjkim | '{' ParameterTypesPackage '}' {$$ = $2;} 247306536Sjkim ; 248281075Sdim 249306536SjkimOptionalParameterTypesPackage 250306536Sjkim : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 251306536Sjkim | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} 252306536Sjkim ; 253271440Sjkim 254306536Sjkim /* ACPI 3.0 -- allow semicolons between terms */ 255306536Sjkim 256271440SjkimTermList 257271440Sjkim : {$$ = NULL;} 258271440Sjkim | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 259271440Sjkim | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} 260271440Sjkim | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 261271440Sjkim | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} 262271440Sjkim ; 263271440Sjkim 264271440SjkimTerm 265271440Sjkim : Object {} 266271440Sjkim | Type1Opcode {} 267271440Sjkim | Type2Opcode {} 268281687Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 269281687Sjkim | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 270271440Sjkim | Type2BufferOpcode {} 271271440Sjkim | Type2BufferOrStringOpcode {} 272271440Sjkim | error {$$ = AslDoError(); yyclearin;} 273271440Sjkim ; 274271440Sjkim 275306536Sjkim/* 276306536Sjkim * Case-Default list; allow only one Default term and unlimited Case terms 277306536Sjkim */ 278306536SjkimCaseDefaultTermList 279306536Sjkim : {$$ = NULL;} 280306536Sjkim | CaseTerm {} 281306536Sjkim | DefaultTerm {} 282306536Sjkim | CaseDefaultTermList 283306536Sjkim CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 284306536Sjkim | CaseDefaultTermList 285306536Sjkim DefaultTerm {$$ = TrLinkPeerNode ($1,$2);} 286271440Sjkim 287306536Sjkim/* Original - attempts to force zero or one default term within the switch */ 288306536Sjkim 289306536Sjkim/* 290306536SjkimCaseDefaultTermList 291271440Sjkim : {$$ = NULL;} 292306536Sjkim | CaseTermList 293306536Sjkim DefaultTerm 294306536Sjkim CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} 295306536Sjkim | CaseTermList 296306536Sjkim CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 297271440Sjkim ; 298271440Sjkim 299306536SjkimCaseTermList 300306536Sjkim : {$$ = NULL;} 301306536Sjkim | CaseTerm {} 302306536Sjkim | CaseTermList 303306536Sjkim CaseTerm {$$ = TrLinkPeerNode ($1,$2);} 304271440Sjkim ; 305306536Sjkim*/ 306271440Sjkim 307306536Sjkim 308306536Sjkim/******************************************************************************* 309306536Sjkim * 310306536Sjkim * ASL Data and Constant Terms 311306536Sjkim * 312306536Sjkim ******************************************************************************/ 313306536Sjkim 314271440SjkimDataObject 315271440Sjkim : BufferData {} 316271440Sjkim | PackageData {} 317271440Sjkim | IntegerData {} 318271440Sjkim | StringData {} 319271440Sjkim ; 320271440Sjkim 321271440SjkimBufferData 322271440Sjkim : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 323271440Sjkim | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 324271440Sjkim | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 325271440Sjkim | BufferTerm {} 326271440Sjkim ; 327271440Sjkim 328271440SjkimPackageData 329271440Sjkim : PackageTerm {} 330271440Sjkim ; 331271440Sjkim 332271440SjkimIntegerData 333271440Sjkim : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 334271440Sjkim | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 335271440Sjkim | Integer {} 336271440Sjkim | ConstTerm {} 337271440Sjkim ; 338271440Sjkim 339271440SjkimStringData 340271440Sjkim : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 341271440Sjkim | String {} 342271440Sjkim ; 343271440Sjkim 344306536SjkimByteConst 345306536Sjkim : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 346306536Sjkim ; 347306536Sjkim 348306536SjkimWordConst 349306536Sjkim : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 350306536Sjkim ; 351306536Sjkim 352306536SjkimDWordConst 353306536Sjkim : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 354306536Sjkim ; 355306536Sjkim 356306536SjkimQWordConst 357306536Sjkim : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 358306536Sjkim ; 359306536Sjkim 360306536Sjkim/* 361306536Sjkim * The NODE_COMPILE_TIME_CONST flag in the following constant expressions 362306536Sjkim * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes 363306536Sjkim * to simple integers. It is an error if these types of expressions cannot be 364306536Sjkim * reduced, since the AML grammar for ****ConstExpr requires a simple constant. 365306536Sjkim * Note: The required byte length of the constant is passed through to the 366306536Sjkim * constant folding code in the node AmlLength field. 367306536Sjkim */ 368306536SjkimByteConstExpr 369306536Sjkim : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 370306536Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} 371306536Sjkim | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} 372306536Sjkim | ByteConst {} 373306536Sjkim ; 374306536Sjkim 375306536SjkimWordConstExpr 376306536Sjkim : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 377306536Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} 378306536Sjkim | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} 379306536Sjkim | WordConst {} 380306536Sjkim ; 381306536Sjkim 382306536SjkimDWordConstExpr 383306536Sjkim : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 384306536Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} 385306536Sjkim | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} 386306536Sjkim | DWordConst {} 387306536Sjkim ; 388306536Sjkim 389306536SjkimQWordConstExpr 390306536Sjkim : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 391306536Sjkim | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} 392306536Sjkim | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} 393306536Sjkim | QWordConst {} 394306536Sjkim ; 395306536Sjkim 396306536SjkimConstTerm 397306536Sjkim : ConstExprTerm {} 398306536Sjkim | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} 399306536Sjkim ; 400306536Sjkim 401306536SjkimConstExprTerm 402306536Sjkim : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);} 403306536Sjkim | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);} 404306536Sjkim | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);} 405306536Sjkim | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);} 406306536Sjkim | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);} 407306536Sjkim | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);} 408306536Sjkim | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);} 409306536Sjkim ; 410306536Sjkim 411306536SjkimInteger 412306536Sjkim : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} 413306536Sjkim ; 414306536Sjkim 415306536SjkimString 416306536Sjkim : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} 417306536Sjkim ; 418306536Sjkim 419306536Sjkim 420306536Sjkim/******************************************************************************* 421306536Sjkim * 422306536Sjkim * ASL Opcode Terms 423306536Sjkim * 424306536Sjkim ******************************************************************************/ 425306536Sjkim 426306536SjkimCompilerDirective 427306536Sjkim : IncludeTerm {} 428306536Sjkim | IncludeEndTerm {} 429306536Sjkim | ExternalTerm {} 430306536Sjkim ; 431306536Sjkim 432271440SjkimNamedObject 433271440Sjkim : BankFieldTerm {} 434271440Sjkim | CreateBitFieldTerm {} 435271440Sjkim | CreateByteFieldTerm {} 436271440Sjkim | CreateDWordFieldTerm {} 437271440Sjkim | CreateFieldTerm {} 438271440Sjkim | CreateQWordFieldTerm {} 439271440Sjkim | CreateWordFieldTerm {} 440271440Sjkim | DataRegionTerm {} 441271440Sjkim | DeviceTerm {} 442271440Sjkim | EventTerm {} 443271440Sjkim | FieldTerm {} 444271440Sjkim | FunctionTerm {} 445271440Sjkim | IndexFieldTerm {} 446271440Sjkim | MethodTerm {} 447271440Sjkim | MutexTerm {} 448271440Sjkim | OpRegionTerm {} 449271440Sjkim | PowerResTerm {} 450271440Sjkim | ProcessorTerm {} 451271440Sjkim | ThermalZoneTerm {} 452271440Sjkim ; 453271440Sjkim 454271440SjkimNameSpaceModifier 455271440Sjkim : AliasTerm {} 456271440Sjkim | NameTerm {} 457271440Sjkim | ScopeTerm {} 458271440Sjkim ; 459271440Sjkim 460306536Sjkim/* For ObjectType: SuperName except for MethodInvocationTerm */ 461271440Sjkim 462306536SjkimObjectTypeName 463306536Sjkim : NameString {} 464306536Sjkim | ArgTerm {} 465306536Sjkim | LocalTerm {} 466306536Sjkim | DebugTerm {} 467306536Sjkim | RefOfTerm {} 468306536Sjkim | DerefOfTerm {} 469306536Sjkim | IndexTerm {} 470306536Sjkim/* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */ 471271440Sjkim ; 472271440Sjkim 473271440SjkimRequiredTarget 474271440Sjkim : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} 475271440Sjkim ; 476271440Sjkim 477271440SjkimSimpleTarget 478271440Sjkim : NameString {} 479271440Sjkim | LocalTerm {} 480271440Sjkim | ArgTerm {} 481271440Sjkim ; 482271440Sjkim 483271440Sjkim/* Opcode types */ 484271440Sjkim 485271440SjkimType1Opcode 486271440Sjkim : BreakTerm {} 487271440Sjkim | BreakPointTerm {} 488271440Sjkim | ContinueTerm {} 489271440Sjkim | FatalTerm {} 490306536Sjkim | ForTerm {} 491306536Sjkim | ElseIfTerm {} 492271440Sjkim | LoadTerm {} 493271440Sjkim | NoOpTerm {} 494271440Sjkim | NotifyTerm {} 495271440Sjkim | ReleaseTerm {} 496271440Sjkim | ResetTerm {} 497271440Sjkim | ReturnTerm {} 498271440Sjkim | SignalTerm {} 499271440Sjkim | SleepTerm {} 500271440Sjkim | StallTerm {} 501271440Sjkim | SwitchTerm {} 502271440Sjkim | UnloadTerm {} 503271440Sjkim | WhileTerm {} 504271440Sjkim ; 505271440Sjkim 506271440SjkimType2Opcode 507271440Sjkim : AcquireTerm {} 508271440Sjkim | CondRefOfTerm {} 509271440Sjkim | CopyObjectTerm {} 510271440Sjkim | DerefOfTerm {} 511271440Sjkim | ObjectTypeTerm {} 512271440Sjkim | RefOfTerm {} 513271440Sjkim | SizeOfTerm {} 514271440Sjkim | StoreTerm {} 515281075Sdim | EqualsTerm {} 516271440Sjkim | TimerTerm {} 517271440Sjkim | WaitTerm {} 518281687Sjkim | MethodInvocationTerm {} 519271440Sjkim ; 520271440Sjkim 521271440Sjkim/* 522271440Sjkim * Type 3/4/5 opcodes 523271440Sjkim */ 524271440SjkimType2IntegerOpcode /* "Type3" opcodes */ 525281687Sjkim : Expression {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 526281687Sjkim | AddTerm {} 527271440Sjkim | AndTerm {} 528271440Sjkim | DecTerm {} 529271440Sjkim | DivideTerm {} 530271440Sjkim | FindSetLeftBitTerm {} 531271440Sjkim | FindSetRightBitTerm {} 532271440Sjkim | FromBCDTerm {} 533271440Sjkim | IncTerm {} 534271440Sjkim | IndexTerm {} 535271440Sjkim | LAndTerm {} 536271440Sjkim | LEqualTerm {} 537271440Sjkim | LGreaterTerm {} 538271440Sjkim | LGreaterEqualTerm {} 539271440Sjkim | LLessTerm {} 540271440Sjkim | LLessEqualTerm {} 541271440Sjkim | LNotTerm {} 542271440Sjkim | LNotEqualTerm {} 543271440Sjkim | LoadTableTerm {} 544271440Sjkim | LOrTerm {} 545271440Sjkim | MatchTerm {} 546271440Sjkim | ModTerm {} 547271440Sjkim | MultiplyTerm {} 548271440Sjkim | NAndTerm {} 549271440Sjkim | NOrTerm {} 550271440Sjkim | NotTerm {} 551271440Sjkim | OrTerm {} 552271440Sjkim | ShiftLeftTerm {} 553271440Sjkim | ShiftRightTerm {} 554271440Sjkim | SubtractTerm {} 555271440Sjkim | ToBCDTerm {} 556271440Sjkim | ToIntegerTerm {} 557271440Sjkim | XOrTerm {} 558271440Sjkim ; 559271440Sjkim 560271440SjkimType2StringOpcode /* "Type4" Opcodes */ 561271440Sjkim : ToDecimalStringTerm {} 562271440Sjkim | ToHexStringTerm {} 563271440Sjkim | ToStringTerm {} 564271440Sjkim ; 565271440Sjkim 566271440SjkimType2BufferOpcode /* "Type5" Opcodes */ 567271440Sjkim : ToBufferTerm {} 568271440Sjkim | ConcatResTerm {} 569271440Sjkim ; 570271440Sjkim 571271440SjkimType2BufferOrStringOpcode 572281687Sjkim : ConcatTerm {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} 573281075Sdim | PrintfTerm {} 574281075Sdim | FprintfTerm {} 575271440Sjkim | MidTerm {} 576271440Sjkim ; 577271440Sjkim 578271440Sjkim/* 579271440Sjkim * A type 3 opcode evaluates to an Integer and cannot have a destination operand 580271440Sjkim */ 581271440SjkimType3Opcode 582271440Sjkim : EISAIDTerm {} 583271440Sjkim ; 584271440Sjkim 585271440Sjkim/* Obsolete 586271440SjkimType4Opcode 587271440Sjkim : ConcatTerm {} 588271440Sjkim | ToDecimalStringTerm {} 589271440Sjkim | ToHexStringTerm {} 590271440Sjkim | MidTerm {} 591271440Sjkim | ToStringTerm {} 592271440Sjkim ; 593271440Sjkim*/ 594271440Sjkim 595271440SjkimType5Opcode 596271440Sjkim : ResourceTemplateTerm {} 597271440Sjkim | UnicodeTerm {} 598281075Sdim | ToPLDTerm {} 599271440Sjkim | ToUUIDTerm {} 600271440Sjkim ; 601271440Sjkim 602271440SjkimType6Opcode 603271440Sjkim : RefOfTerm {} 604271440Sjkim | DerefOfTerm {} 605271440Sjkim | IndexTerm {} 606306536Sjkim | IndexExpTerm {} 607281687Sjkim | MethodInvocationTerm {} 608271440Sjkim ; 609271440Sjkim 610306536Sjkim 611306536Sjkim/******************************************************************************* 612306536Sjkim * 613306536Sjkim * ASL Primary Terms 614306536Sjkim * 615306536Sjkim ******************************************************************************/ 616306536Sjkim 617306536SjkimAccessAsTerm 618306536Sjkim : PARSEOP_ACCESSAS '(' 619306536Sjkim AccessTypeKeyword 620306536Sjkim OptionalAccessAttribTerm 621306536Sjkim ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} 622306536Sjkim | PARSEOP_ACCESSAS '(' 623306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 624271440Sjkim ; 625271440Sjkim 626306536SjkimAcquireTerm 627306536Sjkim : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);} 628306536Sjkim SuperName 629306536Sjkim ',' WordConstExpr 630306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);} 631306536Sjkim | PARSEOP_ACQUIRE '(' 632306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 633271440Sjkim ; 634271440Sjkim 635306536SjkimAddTerm 636306536Sjkim : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);} 637306536Sjkim TermArg 638306536Sjkim TermArgItem 639306536Sjkim Target 640306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 641306536Sjkim | PARSEOP_ADD '(' 642306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 643306536Sjkim ; 644306536Sjkim 645306536SjkimAliasTerm 646306536Sjkim : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);} 647271440Sjkim NameString 648306536Sjkim NameStringItem 649306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4, 650306536Sjkim TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));} 651306536Sjkim | PARSEOP_ALIAS '(' 652271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 653271440Sjkim ; 654271440Sjkim 655306536SjkimAndTerm 656306536Sjkim : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);} 657306536Sjkim TermArg 658306536Sjkim TermArgItem 659306536Sjkim Target 660306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 661306536Sjkim | PARSEOP_AND '(' 662306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 663306536Sjkim ; 664271440Sjkim 665306536SjkimArgTerm 666306536Sjkim : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);} 667306536Sjkim | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);} 668306536Sjkim | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);} 669306536Sjkim | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);} 670306536Sjkim | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);} 671306536Sjkim | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);} 672306536Sjkim | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);} 673306536Sjkim ; 674271440Sjkim 675271440SjkimBankFieldTerm 676271440Sjkim : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);} 677271440Sjkim NameString 678271440Sjkim NameStringItem 679271440Sjkim TermArgItem 680271440Sjkim ',' AccessTypeKeyword 681271440Sjkim ',' LockRuleKeyword 682271440Sjkim ',' UpdateRuleKeyword 683271440Sjkim ')' '{' 684271440Sjkim FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);} 685271440Sjkim | PARSEOP_BANKFIELD '(' 686271440Sjkim error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 687271440Sjkim ; 688271440Sjkim 689306536SjkimBreakTerm 690306536Sjkim : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} 691271440Sjkim ; 692271440Sjkim 693306536SjkimBreakPointTerm 694306536Sjkim : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} 695271440Sjkim ; 696271440Sjkim 697306536SjkimBufferTerm 698306536Sjkim : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);} 699306536Sjkim OptionalBufferLength 700306536Sjkim ')' '{' 701306536Sjkim BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 702306536Sjkim | PARSEOP_BUFFER '(' 703306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 704271440Sjkim ; 705271440Sjkim 706306536SjkimBufferTermData 707306536Sjkim : ByteList {} 708306536Sjkim | StringData {} 709306536Sjkim ; 710306536Sjkim 711306536SjkimCaseTerm 712306536Sjkim : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);} 713306536Sjkim DataObject 714306536Sjkim ')' '{' 715306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 716306536Sjkim | PARSEOP_CASE '(' 717271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 718271440Sjkim ; 719271440Sjkim 720306536SjkimConcatTerm 721306536Sjkim : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);} 722306536Sjkim TermArg 723306536Sjkim TermArgItem 724306536Sjkim Target 725306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 726306536Sjkim | PARSEOP_CONCATENATE '(' 727271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 728271440Sjkim ; 729271440Sjkim 730306536SjkimConcatResTerm 731306536Sjkim : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);} 732306536Sjkim TermArg 733306536Sjkim TermArgItem 734306536Sjkim Target 735306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 736306536Sjkim | PARSEOP_CONCATENATERESTEMPLATE '(' 737306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 738306536Sjkim ; 739306536Sjkim 740271440SjkimConnectionTerm 741271440Sjkim : PARSEOP_CONNECTION '(' 742271440Sjkim NameString 743271440Sjkim ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);} 744271440Sjkim | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);} 745271440Sjkim ResourceMacroTerm 746271440Sjkim ')' {$$ = TrLinkChildren ($<n>3, 1, 747271440Sjkim TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3, 748271440Sjkim TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 749271440Sjkim TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 750271440Sjkim $4));} 751271440Sjkim | PARSEOP_CONNECTION '(' 752271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 753271440Sjkim ; 754271440Sjkim 755306536SjkimCondRefOfTerm 756306536Sjkim : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);} 757306536Sjkim SuperName 758306536Sjkim Target 759306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 760306536Sjkim | PARSEOP_CONDREFOF '(' 761306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 762306536Sjkim ; 763306536Sjkim 764306536SjkimContinueTerm 765306536Sjkim : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} 766306536Sjkim ; 767306536Sjkim 768306536SjkimCopyObjectTerm 769306536Sjkim : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);} 770306536Sjkim TermArg 771306536Sjkim ',' SimpleTarget 772306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 773306536Sjkim | PARSEOP_COPYOBJECT '(' 774306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 775306536Sjkim ; 776306536Sjkim 777271440SjkimCreateBitFieldTerm 778271440Sjkim : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);} 779271440Sjkim TermArg 780271440Sjkim TermArgItem 781271440Sjkim NameStringItem 782271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 783271440Sjkim | PARSEOP_CREATEBITFIELD '(' 784271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 785271440Sjkim ; 786271440Sjkim 787271440SjkimCreateByteFieldTerm 788271440Sjkim : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);} 789271440Sjkim TermArg 790271440Sjkim TermArgItem 791271440Sjkim NameStringItem 792271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 793271440Sjkim | PARSEOP_CREATEBYTEFIELD '(' 794271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 795271440Sjkim ; 796271440Sjkim 797271440SjkimCreateDWordFieldTerm 798271440Sjkim : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);} 799271440Sjkim TermArg 800271440Sjkim TermArgItem 801271440Sjkim NameStringItem 802271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 803271440Sjkim | PARSEOP_CREATEDWORDFIELD '(' 804271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 805271440Sjkim ; 806271440Sjkim 807271440SjkimCreateFieldTerm 808271440Sjkim : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);} 809271440Sjkim TermArg 810271440Sjkim TermArgItem 811271440Sjkim TermArgItem 812271440Sjkim NameStringItem 813271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));} 814271440Sjkim | PARSEOP_CREATEFIELD '(' 815271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 816271440Sjkim ; 817271440Sjkim 818271440SjkimCreateQWordFieldTerm 819271440Sjkim : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);} 820271440Sjkim TermArg 821271440Sjkim TermArgItem 822271440Sjkim NameStringItem 823271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 824271440Sjkim | PARSEOP_CREATEQWORDFIELD '(' 825271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 826271440Sjkim ; 827271440Sjkim 828271440SjkimCreateWordFieldTerm 829271440Sjkim : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);} 830271440Sjkim TermArg 831271440Sjkim TermArgItem 832271440Sjkim NameStringItem 833271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} 834271440Sjkim | PARSEOP_CREATEWORDFIELD '(' 835271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 836271440Sjkim ; 837271440Sjkim 838271440SjkimDataRegionTerm 839271440Sjkim : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);} 840271440Sjkim NameString 841271440Sjkim TermArgItem 842271440Sjkim TermArgItem 843271440Sjkim TermArgItem 844271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);} 845271440Sjkim | PARSEOP_DATATABLEREGION '(' 846271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 847271440Sjkim ; 848271440Sjkim 849306536SjkimDebugTerm 850306536Sjkim : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} 851271440Sjkim ; 852271440Sjkim 853306536SjkimDecTerm 854306536Sjkim : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);} 855306536Sjkim SuperName 856306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 857306536Sjkim | PARSEOP_DECREMENT '(' 858271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 859271440Sjkim ; 860271440Sjkim 861306536SjkimDefaultTerm 862306536Sjkim : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);} 863306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 864306536Sjkim | PARSEOP_DEFAULT '{' 865306536Sjkim error '}' {$$ = AslDoError(); yyclearin;} 866271440Sjkim ; 867271440Sjkim 868306536SjkimDerefOfTerm 869306536Sjkim : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);} 870306536Sjkim TermArg 871306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 872306536Sjkim | PARSEOP_DEREFOF '(' 873271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 874271440Sjkim ; 875271440Sjkim 876306536SjkimDeviceTerm 877306536Sjkim : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);} 878271440Sjkim NameString 879271440Sjkim ')' '{' 880306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 881306536Sjkim | PARSEOP_DEVICE '(' 882271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 883271440Sjkim ; 884271440Sjkim 885306536SjkimDivideTerm 886306536Sjkim : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);} 887306536Sjkim TermArg 888271440Sjkim TermArgItem 889306536Sjkim Target 890306536Sjkim Target 891306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 892306536Sjkim | PARSEOP_DIVIDE '(' 893271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 894271440Sjkim ; 895271440Sjkim 896306536SjkimEISAIDTerm 897306536Sjkim : PARSEOP_EISAID '(' 898306536Sjkim StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} 899306536Sjkim | PARSEOP_EISAID '(' 900271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 901271440Sjkim ; 902271440Sjkim 903306536SjkimElseIfTerm 904271440Sjkim : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} 905271440Sjkim ; 906271440Sjkim 907271440SjkimElseTerm 908271440Sjkim : {$$ = NULL;} 909271440Sjkim | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 910271440Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);} 911271440Sjkim 912271440Sjkim | PARSEOP_ELSE '{' 913271440Sjkim error '}' {$$ = AslDoError(); yyclearin;} 914271440Sjkim 915271440Sjkim | PARSEOP_ELSE 916271440Sjkim error {$$ = AslDoError(); yyclearin;} 917271440Sjkim 918271440Sjkim | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);} 919271440Sjkim TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 920271440Sjkim ')' '{' 921271440Sjkim TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);} 922271440Sjkim ElseTerm {TrLinkPeerNode ($<n>5,$11);} 923271440Sjkim {$$ = TrLinkChildren ($<n>3,1,$<n>5);} 924271440Sjkim 925271440Sjkim | PARSEOP_ELSEIF '(' 926271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 927271440Sjkim 928271440Sjkim | PARSEOP_ELSEIF 929271440Sjkim error {$$ = AslDoError(); yyclearin;} 930271440Sjkim ; 931271440Sjkim 932306536SjkimEventTerm 933306536Sjkim : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);} 934271440Sjkim NameString 935306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));} 936306536Sjkim | PARSEOP_EVENT '(' 937271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 938271440Sjkim ; 939271440Sjkim 940306536SjkimExternalTerm 941306536Sjkim : PARSEOP_EXTERNAL '(' 942306536Sjkim NameString 943306536Sjkim OptionalObjectTypeKeyword 944306536Sjkim OptionalParameterTypePackage 945306536Sjkim OptionalParameterTypesPackage 946306536Sjkim ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);} 947306536Sjkim | PARSEOP_EXTERNAL '(' 948306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 949271440Sjkim ; 950271440Sjkim 951306536SjkimFatalTerm 952306536Sjkim : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);} 953306536Sjkim ByteConstExpr 954306536Sjkim ',' DWordConstExpr 955271440Sjkim TermArgItem 956306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 957306536Sjkim | PARSEOP_FATAL '(' 958271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 959271440Sjkim ; 960271440Sjkim 961306536SjkimFieldTerm 962306536Sjkim : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);} 963306536Sjkim NameString 964306536Sjkim ',' AccessTypeKeyword 965306536Sjkim ',' LockRuleKeyword 966306536Sjkim ',' UpdateRuleKeyword 967271440Sjkim ')' '{' 968306536Sjkim FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);} 969306536Sjkim | PARSEOP_FIELD '(' 970306536Sjkim error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 971271440Sjkim ; 972271440Sjkim 973306536SjkimFindSetLeftBitTerm 974306536Sjkim : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);} 975271440Sjkim TermArg 976306536Sjkim Target 977306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 978306536Sjkim | PARSEOP_FINDSETLEFTBIT '(' 979271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 980271440Sjkim ; 981271440Sjkim 982306536SjkimFindSetRightBitTerm 983306536Sjkim : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);} 984271440Sjkim TermArg 985271440Sjkim Target 986306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 987306536Sjkim | PARSEOP_FINDSETRIGHTBIT '(' 988271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 989271440Sjkim ; 990271440Sjkim 991306536Sjkim /* Convert a For() loop to a While() loop */ 992306536SjkimForTerm 993306536Sjkim : PARSEOP_FOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);} 994306536Sjkim OptionalTermArg ',' {} 995306536Sjkim OptionalPredicate ',' 996306536Sjkim OptionalTermArg {$<n>$ = TrLinkPeerNode ($4,$<n>3); 997306536Sjkim TrSetParent ($9,$<n>3);} /* New parent is WHILE */ 998306536Sjkim ')' '{' TermList '}' {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);} 999306536Sjkim {$<n>$ = TrLinkPeerNode ($13,$9); 1000306536Sjkim $$ = $<n>10;} 1001271440Sjkim ; 1002271440Sjkim 1003306536SjkimOptionalPredicate 1004306536Sjkim : {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);} 1005306536Sjkim | TermArg {$$ = $1;} 1006271440Sjkim ; 1007271440Sjkim 1008306536SjkimFprintfTerm 1009306536Sjkim : PARSEOP_FPRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);} 1010306536Sjkim TermArg ',' 1011306536Sjkim StringData 1012306536Sjkim PrintfArgList 1013306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 1014306536Sjkim | PARSEOP_FPRINTF '(' 1015271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1016271440Sjkim ; 1017271440Sjkim 1018306536SjkimFromBCDTerm 1019306536Sjkim : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);} 1020306536Sjkim TermArg 1021271440Sjkim Target 1022271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1023306536Sjkim | PARSEOP_FROMBCD '(' 1024271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1025271440Sjkim ; 1026271440Sjkim 1027306536SjkimFunctionTerm 1028306536Sjkim : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 1029306536Sjkim NameString 1030306536Sjkim OptionalParameterTypePackage 1031306536Sjkim OptionalParameterTypesPackage 1032306536Sjkim ')' '{' 1033306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION), 1034306536Sjkim TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0), 1035306536Sjkim TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL), 1036306536Sjkim TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);} 1037306536Sjkim | PARSEOP_FUNCTION '(' 1038271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1039271440Sjkim ; 1040271440Sjkim 1041306536SjkimIfTerm 1042306536Sjkim : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);} 1043271440Sjkim TermArg 1044306536Sjkim ')' '{' 1045306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1046271440Sjkim 1047306536Sjkim | PARSEOP_IF '(' 1048271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1049271440Sjkim ; 1050271440Sjkim 1051306536SjkimIncludeTerm 1052306536Sjkim : PARSEOP_INCLUDE '(' 1053306536Sjkim String ')' {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3); 1054306536Sjkim FlOpenIncludeFile ($3);} 1055271440Sjkim ; 1056271440Sjkim 1057306536SjkimIncludeEndTerm 1058306536Sjkim : PARSEOP_INCLUDE_END {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);} 1059271440Sjkim ; 1060271440Sjkim 1061271440SjkimIncTerm 1062271440Sjkim : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);} 1063271440Sjkim SuperName 1064271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1065271440Sjkim | PARSEOP_INCREMENT '(' 1066271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1067271440Sjkim ; 1068271440Sjkim 1069306536SjkimIndexFieldTerm 1070306536Sjkim : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);} 1071306536Sjkim NameString 1072306536Sjkim NameStringItem 1073306536Sjkim ',' AccessTypeKeyword 1074306536Sjkim ',' LockRuleKeyword 1075306536Sjkim ',' UpdateRuleKeyword 1076306536Sjkim ')' '{' 1077306536Sjkim FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);} 1078306536Sjkim | PARSEOP_INDEXFIELD '(' 1079306536Sjkim error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} 1080306536Sjkim ; 1081306536Sjkim 1082271440SjkimIndexTerm 1083271440Sjkim : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);} 1084271440Sjkim TermArg 1085271440Sjkim TermArgItem 1086271440Sjkim Target 1087271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1088271440Sjkim | PARSEOP_INDEX '(' 1089271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1090271440Sjkim ; 1091271440Sjkim 1092271440SjkimLAndTerm 1093271440Sjkim : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);} 1094271440Sjkim TermArg 1095271440Sjkim TermArgItem 1096271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1097271440Sjkim | PARSEOP_LAND '(' 1098271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1099271440Sjkim ; 1100271440Sjkim 1101271440SjkimLEqualTerm 1102271440Sjkim : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1103271440Sjkim TermArg 1104271440Sjkim TermArgItem 1105271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1106271440Sjkim | PARSEOP_LEQUAL '(' 1107271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1108271440Sjkim ; 1109271440Sjkim 1110306536SjkimLGreaterEqualTerm 1111306536Sjkim : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1112306536Sjkim TermArg 1113306536Sjkim TermArgItem 1114306536Sjkim ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1115306536Sjkim | PARSEOP_LGREATEREQUAL '(' 1116306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1117306536Sjkim ; 1118306536Sjkim 1119271440SjkimLGreaterTerm 1120271440Sjkim : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1121271440Sjkim TermArg 1122271440Sjkim TermArgItem 1123271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1124271440Sjkim | PARSEOP_LGREATER '(' 1125271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1126271440Sjkim ; 1127271440Sjkim 1128306536SjkimLLessEqualTerm 1129306536Sjkim : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);} 1130271440Sjkim TermArg 1131271440Sjkim TermArgItem 1132271440Sjkim ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1133306536Sjkim | PARSEOP_LLESSEQUAL '(' 1134271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1135271440Sjkim ; 1136271440Sjkim 1137271440SjkimLLessTerm 1138271440Sjkim : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);} 1139271440Sjkim TermArg 1140271440Sjkim TermArgItem 1141271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1142271440Sjkim | PARSEOP_LLESS '(' 1143271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1144271440Sjkim ; 1145271440Sjkim 1146306536SjkimLNotEqualTerm 1147306536Sjkim : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);} 1148271440Sjkim TermArg 1149271440Sjkim TermArgItem 1150271440Sjkim ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));} 1151306536Sjkim | PARSEOP_LNOTEQUAL '(' 1152271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1153271440Sjkim ; 1154271440Sjkim 1155271440SjkimLNotTerm 1156271440Sjkim : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);} 1157271440Sjkim TermArg 1158271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1159271440Sjkim | PARSEOP_LNOT '(' 1160271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1161271440Sjkim ; 1162271440Sjkim 1163271440SjkimLoadTableTerm 1164271440Sjkim : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);} 1165271440Sjkim TermArg 1166271440Sjkim TermArgItem 1167271440Sjkim TermArgItem 1168271440Sjkim OptionalListString 1169271440Sjkim OptionalListString 1170271440Sjkim OptionalReference 1171271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);} 1172271440Sjkim | PARSEOP_LOADTABLE '(' 1173271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1174271440Sjkim ; 1175271440Sjkim 1176306536SjkimLoadTerm 1177306536Sjkim : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);} 1178306536Sjkim NameString 1179306536Sjkim RequiredTarget 1180306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1181306536Sjkim | PARSEOP_LOAD '(' 1182306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1183306536Sjkim ; 1184306536Sjkim 1185306536SjkimLocalTerm 1186306536Sjkim : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);} 1187306536Sjkim | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);} 1188306536Sjkim | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);} 1189306536Sjkim | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);} 1190306536Sjkim | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);} 1191306536Sjkim | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);} 1192306536Sjkim | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);} 1193306536Sjkim | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);} 1194306536Sjkim ; 1195306536Sjkim 1196271440SjkimLOrTerm 1197271440Sjkim : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);} 1198271440Sjkim TermArg 1199271440Sjkim TermArgItem 1200271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1201271440Sjkim | PARSEOP_LOR '(' 1202271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1203271440Sjkim ; 1204271440Sjkim 1205271440SjkimMatchTerm 1206271440Sjkim : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);} 1207271440Sjkim TermArg 1208271440Sjkim ',' MatchOpKeyword 1209271440Sjkim TermArgItem 1210271440Sjkim ',' MatchOpKeyword 1211271440Sjkim TermArgItem 1212271440Sjkim TermArgItem 1213271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);} 1214271440Sjkim | PARSEOP_MATCH '(' 1215271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1216271440Sjkim ; 1217271440Sjkim 1218306536SjkimMethodTerm 1219306536Sjkim : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);} 1220306536Sjkim NameString 1221306536Sjkim OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);} 1222306536Sjkim OptionalSerializeRuleKeyword 1223306536Sjkim OptionalByteConstExpr 1224306536Sjkim OptionalParameterTypePackage 1225306536Sjkim OptionalParameterTypesPackage 1226306536Sjkim ')' '{' 1227306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);} 1228306536Sjkim | PARSEOP_METHOD '(' 1229306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1230306536Sjkim ; 1231306536Sjkim 1232271440SjkimMidTerm 1233271440Sjkim : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);} 1234271440Sjkim TermArg 1235271440Sjkim TermArgItem 1236271440Sjkim TermArgItem 1237271440Sjkim Target 1238271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);} 1239271440Sjkim | PARSEOP_MID '(' 1240271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1241271440Sjkim ; 1242271440Sjkim 1243271440SjkimModTerm 1244271440Sjkim : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);} 1245271440Sjkim TermArg 1246271440Sjkim TermArgItem 1247271440Sjkim Target 1248271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1249271440Sjkim | PARSEOP_MOD '(' 1250271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1251271440Sjkim ; 1252271440Sjkim 1253271440SjkimMultiplyTerm 1254271440Sjkim : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} 1255271440Sjkim TermArg 1256271440Sjkim TermArgItem 1257271440Sjkim Target 1258271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1259271440Sjkim | PARSEOP_MULTIPLY '(' 1260271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1261271440Sjkim ; 1262271440Sjkim 1263306536SjkimMutexTerm 1264306536Sjkim : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);} 1265306536Sjkim NameString 1266306536Sjkim ',' ByteConstExpr 1267306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 1268306536Sjkim | PARSEOP_MUTEX '(' 1269306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1270306536Sjkim ; 1271306536Sjkim 1272306536SjkimNameTerm 1273306536Sjkim : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);} 1274306536Sjkim NameString 1275306536Sjkim ',' DataObject 1276306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} 1277306536Sjkim | PARSEOP_NAME '(' 1278306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1279306536Sjkim ; 1280306536Sjkim 1281271440SjkimNAndTerm 1282271440Sjkim : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);} 1283271440Sjkim TermArg 1284271440Sjkim TermArgItem 1285271440Sjkim Target 1286271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1287271440Sjkim | PARSEOP_NAND '(' 1288271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1289271440Sjkim ; 1290271440Sjkim 1291306536SjkimNoOpTerm 1292306536Sjkim : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} 1293306536Sjkim ; 1294306536Sjkim 1295271440SjkimNOrTerm 1296271440Sjkim : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);} 1297271440Sjkim TermArg 1298271440Sjkim TermArgItem 1299271440Sjkim Target 1300271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1301271440Sjkim | PARSEOP_NOR '(' 1302271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1303271440Sjkim ; 1304271440Sjkim 1305306536SjkimNotifyTerm 1306306536Sjkim : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);} 1307306536Sjkim SuperName 1308306536Sjkim TermArgItem 1309306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1310306536Sjkim | PARSEOP_NOTIFY '(' 1311306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1312306536Sjkim ; 1313306536Sjkim 1314271440SjkimNotTerm 1315271440Sjkim : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);} 1316271440Sjkim TermArg 1317271440Sjkim Target 1318271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1319271440Sjkim | PARSEOP_NOT '(' 1320271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1321271440Sjkim ; 1322271440Sjkim 1323271440SjkimObjectTypeTerm 1324271440Sjkim : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} 1325271440Sjkim ObjectTypeName 1326271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1327271440Sjkim | PARSEOP_OBJECTTYPE '(' 1328271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1329271440Sjkim ; 1330271440Sjkim 1331306536SjkimOffsetTerm 1332306536Sjkim : PARSEOP_OFFSET '(' 1333306536Sjkim AmlPackageLengthTerm 1334306536Sjkim ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} 1335306536Sjkim | PARSEOP_OFFSET '(' 1336306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1337306536Sjkim ; 1338306536Sjkim 1339306536SjkimOpRegionTerm 1340306536Sjkim : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);} 1341306536Sjkim NameString 1342306536Sjkim ',' OpRegionSpaceIdTerm 1343306536Sjkim TermArgItem 1344306536Sjkim TermArgItem 1345306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);} 1346306536Sjkim | PARSEOP_OPERATIONREGION '(' 1347306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1348306536Sjkim ; 1349306536Sjkim 1350306536SjkimOpRegionSpaceIdTerm 1351306536Sjkim : RegionSpaceKeyword {} 1352306536Sjkim | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 1353306536Sjkim ; 1354306536Sjkim 1355271440SjkimOrTerm 1356271440Sjkim : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);} 1357271440Sjkim TermArg 1358271440Sjkim TermArgItem 1359271440Sjkim Target 1360271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1361271440Sjkim | PARSEOP_OR '(' 1362271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1363271440Sjkim ; 1364271440Sjkim 1365306536SjkimPackageTerm 1366306536Sjkim : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);} 1367306536Sjkim VarPackageLengthTerm 1368306536Sjkim ')' '{' 1369306536Sjkim PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1370306536Sjkim | PARSEOP_PACKAGE '(' 1371306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1372306536Sjkim ; 1373306536Sjkim 1374306536SjkimPowerResTerm 1375306536Sjkim : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);} 1376306536Sjkim NameString 1377306536Sjkim ',' ByteConstExpr 1378306536Sjkim ',' WordConstExpr 1379306536Sjkim ')' '{' 1380306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);} 1381306536Sjkim | PARSEOP_POWERRESOURCE '(' 1382306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1383306536Sjkim ; 1384306536Sjkim 1385306536SjkimPrintfTerm 1386306536Sjkim : PARSEOP_PRINTF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);} 1387306536Sjkim StringData 1388306536Sjkim PrintfArgList 1389306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1390306536Sjkim | PARSEOP_PRINTF '(' 1391306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1392306536Sjkim ; 1393306536Sjkim 1394306536SjkimPrintfArgList 1395306536Sjkim : {$$ = NULL;} 1396306536Sjkim | TermArg {$$ = $1;} 1397306536Sjkim | PrintfArgList ',' 1398306536Sjkim TermArg {$$ = TrLinkPeerNode ($1, $3);} 1399306536Sjkim ; 1400306536Sjkim 1401306536SjkimProcessorTerm 1402306536Sjkim : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);} 1403306536Sjkim NameString 1404306536Sjkim ',' ByteConstExpr 1405306536Sjkim OptionalDWordConstExpr 1406306536Sjkim OptionalByteConstExpr 1407306536Sjkim ')' '{' 1408306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);} 1409306536Sjkim | PARSEOP_PROCESSOR '(' 1410306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1411306536Sjkim ; 1412306536Sjkim 1413306536SjkimRawDataBufferTerm 1414306536Sjkim : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);} 1415306536Sjkim OptionalWordConst 1416306536Sjkim ')' '{' 1417306536Sjkim ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1418306536Sjkim | PARSEOP_DATABUFFER '(' 1419306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1420306536Sjkim ; 1421306536Sjkim 1422271440Sjkim/* 1423271440Sjkim * In RefOf, the node isn't really a target, but we can't keep track of it after 1424271440Sjkim * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.) 1425271440Sjkim */ 1426271440SjkimRefOfTerm 1427271440Sjkim : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);} 1428271440Sjkim SuperName 1429271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));} 1430271440Sjkim | PARSEOP_REFOF '(' 1431271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1432271440Sjkim ; 1433271440Sjkim 1434306536SjkimReleaseTerm 1435306536Sjkim : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);} 1436306536Sjkim SuperName 1437306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1438306536Sjkim | PARSEOP_RELEASE '(' 1439306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1440306536Sjkim ; 1441306536Sjkim 1442306536SjkimResetTerm 1443306536Sjkim : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);} 1444306536Sjkim SuperName 1445306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1446306536Sjkim | PARSEOP_RESET '(' 1447306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1448306536Sjkim ; 1449306536Sjkim 1450306536SjkimReturnTerm 1451306536Sjkim : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);} 1452306536Sjkim OptionalReturnArg 1453306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1454306536Sjkim | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));} 1455306536Sjkim | PARSEOP_RETURN '(' 1456306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1457306536Sjkim ; 1458306536Sjkim 1459306536SjkimScopeTerm 1460306536Sjkim : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);} 1461306536Sjkim NameString 1462306536Sjkim ')' '{' 1463306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 1464306536Sjkim | PARSEOP_SCOPE '(' 1465306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1466306536Sjkim ; 1467306536Sjkim 1468271440SjkimShiftLeftTerm 1469271440Sjkim : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} 1470271440Sjkim TermArg 1471271440Sjkim TermArgItem 1472271440Sjkim Target 1473271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1474271440Sjkim | PARSEOP_SHIFTLEFT '(' 1475271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1476271440Sjkim ; 1477271440Sjkim 1478271440SjkimShiftRightTerm 1479271440Sjkim : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} 1480271440Sjkim TermArg 1481271440Sjkim TermArgItem 1482271440Sjkim Target 1483271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1484271440Sjkim | PARSEOP_SHIFTRIGHT '(' 1485271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1486271440Sjkim ; 1487271440Sjkim 1488306536SjkimSignalTerm 1489306536Sjkim : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);} 1490306536Sjkim SuperName 1491306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1492306536Sjkim | PARSEOP_SIGNAL '(' 1493306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1494306536Sjkim ; 1495306536Sjkim 1496271440SjkimSizeOfTerm 1497271440Sjkim : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);} 1498271440Sjkim SuperName 1499271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1500271440Sjkim | PARSEOP_SIZEOF '(' 1501271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1502271440Sjkim ; 1503271440Sjkim 1504306536SjkimSleepTerm 1505306536Sjkim : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);} 1506306536Sjkim TermArg 1507306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1508306536Sjkim | PARSEOP_SLEEP '(' 1509306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1510306536Sjkim ; 1511306536Sjkim 1512306536SjkimStallTerm 1513306536Sjkim : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);} 1514306536Sjkim TermArg 1515306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1516306536Sjkim | PARSEOP_STALL '(' 1517306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1518306536Sjkim ; 1519306536Sjkim 1520271440SjkimStoreTerm 1521271440Sjkim : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);} 1522271440Sjkim TermArg 1523271440Sjkim ',' SuperName 1524271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} 1525271440Sjkim | PARSEOP_STORE '(' 1526271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1527271440Sjkim ; 1528271440Sjkim 1529271440SjkimSubtractTerm 1530271440Sjkim : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} 1531271440Sjkim TermArg 1532271440Sjkim TermArgItem 1533271440Sjkim Target 1534271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1535271440Sjkim | PARSEOP_SUBTRACT '(' 1536271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1537271440Sjkim ; 1538306536SjkimSwitchTerm 1539306536Sjkim : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);} 1540306536Sjkim TermArg 1541306536Sjkim ')' '{' 1542306536Sjkim CaseDefaultTermList '}' 1543306536Sjkim {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1544306536Sjkim | PARSEOP_SWITCH '(' 1545306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1546306536Sjkim ; 1547271440Sjkim 1548306536SjkimThermalZoneTerm 1549306536Sjkim : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);} 1550306536Sjkim NameString 1551306536Sjkim ')' '{' 1552306536Sjkim TermList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} 1553306536Sjkim | PARSEOP_THERMALZONE '(' 1554306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1555306536Sjkim ; 1556306536Sjkim 1557271440SjkimTimerTerm 1558271440Sjkim : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);} 1559271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,0);} 1560271440Sjkim | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);} 1561271440Sjkim | PARSEOP_TIMER '(' 1562271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1563271440Sjkim ; 1564271440Sjkim 1565271440SjkimToBCDTerm 1566271440Sjkim : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);} 1567271440Sjkim TermArg 1568271440Sjkim Target 1569271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1570271440Sjkim | PARSEOP_TOBCD '(' 1571271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1572271440Sjkim ; 1573271440Sjkim 1574271440SjkimToBufferTerm 1575271440Sjkim : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);} 1576271440Sjkim TermArg 1577271440Sjkim Target 1578271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1579271440Sjkim | PARSEOP_TOBUFFER '(' 1580271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1581271440Sjkim ; 1582271440Sjkim 1583271440SjkimToDecimalStringTerm 1584271440Sjkim : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);} 1585271440Sjkim TermArg 1586271440Sjkim Target 1587271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1588271440Sjkim | PARSEOP_TODECIMALSTRING '(' 1589271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1590271440Sjkim ; 1591271440Sjkim 1592271440SjkimToHexStringTerm 1593271440Sjkim : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);} 1594271440Sjkim TermArg 1595271440Sjkim Target 1596271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1597271440Sjkim | PARSEOP_TOHEXSTRING '(' 1598271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1599271440Sjkim ; 1600271440Sjkim 1601271440SjkimToIntegerTerm 1602271440Sjkim : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);} 1603271440Sjkim TermArg 1604271440Sjkim Target 1605271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1606271440Sjkim | PARSEOP_TOINTEGER '(' 1607271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1608271440Sjkim ; 1609271440Sjkim 1610306536SjkimToPLDTerm 1611306536Sjkim : PARSEOP_TOPLD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);} 1612306536Sjkim PldKeywordList 1613306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1614306536Sjkim | PARSEOP_TOPLD '(' 1615306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1616281075Sdim ; 1617281075Sdim 1618281075SdimPldKeywordList 1619281075Sdim : {$$ = NULL;} 1620281075Sdim | PldKeyword 1621281075Sdim PARSEOP_EXP_EQUALS Integer {$$ = TrLinkChildren ($1,1,$3);} 1622281075Sdim | PldKeyword 1623281075Sdim PARSEOP_EXP_EQUALS String {$$ = TrLinkChildren ($1,1,$3);} 1624281075Sdim | PldKeywordList ',' /* Allows a trailing comma at list end */ 1625281075Sdim | PldKeywordList ',' 1626281075Sdim PldKeyword 1627281075Sdim PARSEOP_EXP_EQUALS Integer {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));} 1628281075Sdim | PldKeywordList ',' 1629281075Sdim PldKeyword 1630281075Sdim PARSEOP_EXP_EQUALS String {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));} 1631281075Sdim ; 1632281075Sdim 1633281075Sdim 1634271440SjkimToStringTerm 1635271440Sjkim : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);} 1636271440Sjkim TermArg 1637271440Sjkim OptionalCount 1638271440Sjkim Target 1639271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1640271440Sjkim | PARSEOP_TOSTRING '(' 1641271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1642271440Sjkim ; 1643271440Sjkim 1644271440SjkimToUUIDTerm 1645271440Sjkim : PARSEOP_TOUUID '(' 1646271440Sjkim StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} 1647271440Sjkim | PARSEOP_TOUUID '(' 1648271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1649271440Sjkim ; 1650271440Sjkim 1651306536SjkimUnicodeTerm 1652306536Sjkim : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);} 1653306536Sjkim StringData 1654306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);} 1655306536Sjkim | PARSEOP_UNICODE '(' 1656306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1657306536Sjkim ; 1658306536Sjkim 1659306536SjkimUnloadTerm 1660306536Sjkim : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);} 1661306536Sjkim SuperName 1662306536Sjkim ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 1663306536Sjkim | PARSEOP_UNLOAD '(' 1664306536Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1665306536Sjkim ; 1666306536Sjkim 1667271440SjkimWaitTerm 1668271440Sjkim : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);} 1669271440Sjkim SuperName 1670271440Sjkim TermArgItem 1671271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);} 1672271440Sjkim | PARSEOP_WAIT '(' 1673271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1674271440Sjkim ; 1675271440Sjkim 1676271440SjkimXOrTerm 1677271440Sjkim : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);} 1678271440Sjkim TermArg 1679271440Sjkim TermArgItem 1680271440Sjkim Target 1681271440Sjkim ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);} 1682271440Sjkim | PARSEOP_XOR '(' 1683271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1684271440Sjkim ; 1685271440Sjkim 1686306536SjkimWhileTerm 1687306536Sjkim : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);} 1688306536Sjkim TermArg 1689306536Sjkim ')' '{' TermList '}' 1690306536Sjkim {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 1691306536Sjkim | PARSEOP_WHILE '(' 1692271440Sjkim error ')' {$$ = AslDoError(); yyclearin;} 1693271440Sjkim ; 1694271440Sjkim 1695271440Sjkim 1696306536Sjkim/******************************************************************************* 1697306536Sjkim * 1698306536Sjkim * ASL Helper Terms 1699306536Sjkim * 1700306536Sjkim ******************************************************************************/ 1701271440Sjkim 1702271440SjkimAmlPackageLengthTerm 1703271440Sjkim : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} 1704271440Sjkim ; 1705271440Sjkim 1706271440SjkimNameStringItem 1707271440Sjkim : ',' NameString {$$ = $2;} 1708271440Sjkim | ',' error {$$ = AslDoError (); yyclearin;} 1709271440Sjkim ; 1710271440Sjkim 1711271440SjkimTermArgItem 1712271440Sjkim : ',' TermArg {$$ = $2;} 1713271440Sjkim | ',' error {$$ = AslDoError (); yyclearin;} 1714271440Sjkim ; 1715271440Sjkim 1716271440SjkimOptionalReference 1717271440Sjkim : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 1718271440Sjkim | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ 1719271440Sjkim | ',' TermArg {$$ = $2;} 1720271440Sjkim ; 1721271440Sjkim 1722271440SjkimOptionalReturnArg 1723271440Sjkim : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ 1724271440Sjkim | TermArg {$$ = $1;} 1725271440Sjkim ; 1726271440Sjkim 1727271440SjkimOptionalSerializeRuleKeyword 1728271440Sjkim : {$$ = NULL;} 1729271440Sjkim | ',' {$$ = NULL;} 1730271440Sjkim | ',' SerializeRuleKeyword {$$ = $2;} 1731271440Sjkim ; 1732271440Sjkim 1733271440SjkimOptionalTermArg 1734306536Sjkim : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} 1735271440Sjkim | TermArg {$$ = $1;} 1736271440Sjkim ; 1737271440Sjkim 1738306536SjkimOptionalBufferLength 1739271440Sjkim : {$$ = NULL;} 1740306536Sjkim | TermArg {$$ = $1;} 1741271440Sjkim ; 1742271440Sjkim 1743271440SjkimOptionalWordConst 1744271440Sjkim : {$$ = NULL;} 1745271440Sjkim | WordConst {$$ = $1;} 1746271440Sjkim ; 1747