3 /******************************************************************************
5 * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions)
7 *****************************************************************************/
10 * Copyright (C) 2000 - 2011, Intel Corp.
11 * All rights reserved.
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
16 * 1. Redistributions of source code must retain the above copyright
17 * notice, this list of conditions, and the following disclaimer,
18 * without modification.
19 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
20 * substantially similar to the "NO WARRANTY" disclaimer below
21 * ("Disclaimer") and any redistribution must be conditioned upon
22 * including a substantially similar Disclaimer requirement for further
23 * binary redistribution.
24 * 3. Neither the names of the above-listed copyright holders nor the names
25 * of any contributors may be used to endorse or promote products derived
26 * from this software without specific prior written permission.
28 * Alternatively, this software may be distributed under the terms of the
29 * GNU General Public License ("GPL") version 2 as published by the Free
30 * Software Foundation.
33 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
36 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
37 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
41 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
42 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43 * POSSIBILITY OF SUCH DAMAGES.
46 #include <contrib/dev/acpica/compiler/aslcompiler.h>
50 #include <contrib/dev/acpica/include/acpi.h>
51 #include <contrib/dev/acpica/include/accommon.h>
53 #define _COMPONENT ACPI_COMPILER
54 ACPI_MODULE_NAME ("aslparse")
59 * October 2005: The following list terms have been optimized (from the
60 * original ASL grammar in the ACPI specification) to force the immediate
61 * reduction of each list item so that the parse stack use doesn't increase on
62 * each list element and possibly overflow on very large lists (>4000 items).
63 * This dramatically reduces use of the parse stack overall.
65 * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList,
66 * ResourceMacroList, and FieldUnitList
69 void * AslLocalAllocate (unsigned int Size);
71 /* Bison/yacc configuration */
75 #define alloca AslLocalAllocate
76 #define yytname AslCompilername
78 #define YYINITDEPTH 600 /* State stack depth */
79 #define YYDEBUG 1 /* Enable debug output */
80 #define YYERROR_VERBOSE 1 /* Verbose error messages */
83 * The windows version of bison defines this incorrectly as "32768" (Not negative).
84 * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
85 * instead (#define YYFBAD 32768), so we can define it correctly here.
87 * The problem is that if YYFLAG is positive, the extended syntax error messages
95 * Declare the type of values in the grammar
100 ACPI_PARSE_OBJECT *n;
103 /*! [Begin] no source code translation */
106 * These shift/reduce conflicts are expected. There should be zero
107 * reduce/reduce conflicts.
112 * Token types: These are returned by the lexer
114 * NOTE: This list MUST match the AslKeywordMapping table found
115 * in aslmap.c EXACTLY! Double check any changes!
117 %token <i> PARSEOP_ACCESSAS
118 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
119 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
120 %token <i> PARSEOP_ACCESSATTRIB_BYTE
121 %token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
122 %token <i> PARSEOP_ACCESSATTRIB_QUICK
123 %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
124 %token <i> PARSEOP_ACCESSATTRIB_WORD
125 %token <i> PARSEOP_ACCESSTYPE_ANY
126 %token <i> PARSEOP_ACCESSTYPE_BUF
127 %token <i> PARSEOP_ACCESSTYPE_BYTE
128 %token <i> PARSEOP_ACCESSTYPE_DWORD
129 %token <i> PARSEOP_ACCESSTYPE_QWORD
130 %token <i> PARSEOP_ACCESSTYPE_WORD
131 %token <i> PARSEOP_ACQUIRE
132 %token <i> PARSEOP_ADD
133 %token <i> PARSEOP_ADDRESSSPACE_FFIXEDHW
134 %token <i> PARSEOP_ADDRESSTYPE_ACPI
135 %token <i> PARSEOP_ADDRESSTYPE_MEMORY
136 %token <i> PARSEOP_ADDRESSTYPE_NVS
137 %token <i> PARSEOP_ADDRESSTYPE_RESERVED
138 %token <i> PARSEOP_ALIAS
139 %token <i> PARSEOP_AND
140 %token <i> PARSEOP_ARG0
141 %token <i> PARSEOP_ARG1
142 %token <i> PARSEOP_ARG2
143 %token <i> PARSEOP_ARG3
144 %token <i> PARSEOP_ARG4
145 %token <i> PARSEOP_ARG5
146 %token <i> PARSEOP_ARG6
147 %token <i> PARSEOP_BANKFIELD
148 %token <i> PARSEOP_BREAK
149 %token <i> PARSEOP_BREAKPOINT
150 %token <i> PARSEOP_BUFFER
151 %token <i> PARSEOP_BUSMASTERTYPE_MASTER
152 %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
153 %token <i> PARSEOP_BYTECONST
154 %token <i> PARSEOP_CASE
155 %token <i> PARSEOP_CONCATENATE
156 %token <i> PARSEOP_CONCATENATERESTEMPLATE
157 %token <i> PARSEOP_CONDREFOF
158 %token <i> PARSEOP_CONTINUE
159 %token <i> PARSEOP_COPYOBJECT
160 %token <i> PARSEOP_CREATEBITFIELD
161 %token <i> PARSEOP_CREATEBYTEFIELD
162 %token <i> PARSEOP_CREATEDWORDFIELD
163 %token <i> PARSEOP_CREATEFIELD
164 %token <i> PARSEOP_CREATEQWORDFIELD
165 %token <i> PARSEOP_CREATEWORDFIELD
166 %token <i> PARSEOP_DATATABLEREGION
167 %token <i> PARSEOP_DEBUG
168 %token <i> PARSEOP_DECODETYPE_POS
169 %token <i> PARSEOP_DECODETYPE_SUB
170 %token <i> PARSEOP_DECREMENT
171 %token <i> PARSEOP_DEFAULT
172 %token <i> PARSEOP_DEFAULT_ARG
173 %token <i> PARSEOP_DEFINITIONBLOCK
174 %token <i> PARSEOP_DEREFOF
175 %token <i> PARSEOP_DEVICE
176 %token <i> PARSEOP_DIVIDE
177 %token <i> PARSEOP_DMA
178 %token <i> PARSEOP_DMATYPE_A
179 %token <i> PARSEOP_DMATYPE_COMPATIBILITY
180 %token <i> PARSEOP_DMATYPE_B
181 %token <i> PARSEOP_DMATYPE_F
182 %token <i> PARSEOP_DWORDCONST
183 %token <i> PARSEOP_DWORDIO
184 %token <i> PARSEOP_DWORDMEMORY
185 %token <i> PARSEOP_DWORDSPACE
186 %token <i> PARSEOP_EISAID
187 %token <i> PARSEOP_ELSE
188 %token <i> PARSEOP_ELSEIF
189 %token <i> PARSEOP_ENDDEPENDENTFN
190 %token <i> PARSEOP_ENDTAG
191 %token <i> PARSEOP_ERRORNODE
192 %token <i> PARSEOP_EVENT
193 %token <i> PARSEOP_EXTENDEDIO
194 %token <i> PARSEOP_EXTENDEDMEMORY
195 %token <i> PARSEOP_EXTENDEDSPACE
196 %token <i> PARSEOP_EXTERNAL
197 %token <i> PARSEOP_FATAL
198 %token <i> PARSEOP_FIELD
199 %token <i> PARSEOP_FINDSETLEFTBIT
200 %token <i> PARSEOP_FINDSETRIGHTBIT
201 %token <i> PARSEOP_FIXEDIO
202 %token <i> PARSEOP_FROMBCD
203 %token <i> PARSEOP_FUNCTION
204 %token <i> PARSEOP_IF
205 %token <i> PARSEOP_INCLUDE
206 %token <i> PARSEOP_INCLUDE_CSTYLE
207 %token <i> PARSEOP_INCLUDE_END
208 %token <i> PARSEOP_INCREMENT
209 %token <i> PARSEOP_INDEX
210 %token <i> PARSEOP_INDEXFIELD
211 %token <i> PARSEOP_INTEGER
212 %token <i> PARSEOP_INTERRUPT
213 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
214 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
215 %token <i> PARSEOP_INTTYPE_EDGE
216 %token <i> PARSEOP_INTTYPE_LEVEL
217 %token <i> PARSEOP_IO
218 %token <i> PARSEOP_IODECODETYPE_10
219 %token <i> PARSEOP_IODECODETYPE_16
220 %token <i> PARSEOP_IRQ
221 %token <i> PARSEOP_IRQNOFLAGS
222 %token <i> PARSEOP_LAND
223 %token <i> PARSEOP_LEQUAL
224 %token <i> PARSEOP_LGREATER
225 %token <i> PARSEOP_LGREATEREQUAL
226 %token <i> PARSEOP_LINE_CSTYLE
227 %token <i> PARSEOP_LLESS
228 %token <i> PARSEOP_LLESSEQUAL
229 %token <i> PARSEOP_LNOT
230 %token <i> PARSEOP_LNOTEQUAL
231 %token <i> PARSEOP_LOAD
232 %token <i> PARSEOP_LOADTABLE
233 %token <i> PARSEOP_LOCAL0
234 %token <i> PARSEOP_LOCAL1
235 %token <i> PARSEOP_LOCAL2
236 %token <i> PARSEOP_LOCAL3
237 %token <i> PARSEOP_LOCAL4
238 %token <i> PARSEOP_LOCAL5
239 %token <i> PARSEOP_LOCAL6
240 %token <i> PARSEOP_LOCAL7
241 %token <i> PARSEOP_LOCKRULE_LOCK
242 %token <i> PARSEOP_LOCKRULE_NOLOCK
243 %token <i> PARSEOP_LOR
244 %token <i> PARSEOP_MATCH
245 %token <i> PARSEOP_MATCHTYPE_MEQ
246 %token <i> PARSEOP_MATCHTYPE_MGE
247 %token <i> PARSEOP_MATCHTYPE_MGT
248 %token <i> PARSEOP_MATCHTYPE_MLE
249 %token <i> PARSEOP_MATCHTYPE_MLT
250 %token <i> PARSEOP_MATCHTYPE_MTR
251 %token <i> PARSEOP_MAXTYPE_FIXED
252 %token <i> PARSEOP_MAXTYPE_NOTFIXED
253 %token <i> PARSEOP_MEMORY24
254 %token <i> PARSEOP_MEMORY32
255 %token <i> PARSEOP_MEMORY32FIXED
256 %token <i> PARSEOP_MEMTYPE_CACHEABLE
257 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
258 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
259 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
260 %token <i> PARSEOP_METHOD
261 %token <i> PARSEOP_METHODCALL
262 %token <i> PARSEOP_MID
263 %token <i> PARSEOP_MINTYPE_FIXED
264 %token <i> PARSEOP_MINTYPE_NOTFIXED
265 %token <i> PARSEOP_MOD
266 %token <i> PARSEOP_MULTIPLY
267 %token <i> PARSEOP_MUTEX
268 %token <i> PARSEOP_NAME
269 %token <s> PARSEOP_NAMESEG
270 %token <s> PARSEOP_NAMESTRING
271 %token <i> PARSEOP_NAND
272 %token <i> PARSEOP_NOOP
273 %token <i> PARSEOP_NOR
274 %token <i> PARSEOP_NOT
275 %token <i> PARSEOP_NOTIFY
276 %token <i> PARSEOP_OBJECTTYPE
277 %token <i> PARSEOP_OBJECTTYPE_BFF
278 %token <i> PARSEOP_OBJECTTYPE_BUF
279 %token <i> PARSEOP_OBJECTTYPE_DDB
280 %token <i> PARSEOP_OBJECTTYPE_DEV
281 %token <i> PARSEOP_OBJECTTYPE_EVT
282 %token <i> PARSEOP_OBJECTTYPE_FLD
283 %token <i> PARSEOP_OBJECTTYPE_INT
284 %token <i> PARSEOP_OBJECTTYPE_MTH
285 %token <i> PARSEOP_OBJECTTYPE_MTX
286 %token <i> PARSEOP_OBJECTTYPE_OPR
287 %token <i> PARSEOP_OBJECTTYPE_PKG
288 %token <i> PARSEOP_OBJECTTYPE_POW
289 %token <i> PARSEOP_OBJECTTYPE_PRO
290 %token <i> PARSEOP_OBJECTTYPE_STR
291 %token <i> PARSEOP_OBJECTTYPE_THZ
292 %token <i> PARSEOP_OBJECTTYPE_UNK
293 %token <i> PARSEOP_OFFSET
294 %token <i> PARSEOP_ONE
295 %token <i> PARSEOP_ONES
296 %token <i> PARSEOP_OPERATIONREGION
297 %token <i> PARSEOP_OR
298 %token <i> PARSEOP_PACKAGE
299 %token <i> PARSEOP_PACKAGE_LENGTH
300 %token <i> PARSEOP_POWERRESOURCE
301 %token <i> PARSEOP_PROCESSOR
302 %token <i> PARSEOP_QWORDCONST
303 %token <i> PARSEOP_QWORDIO
304 %token <i> PARSEOP_QWORDMEMORY
305 %token <i> PARSEOP_QWORDSPACE
306 %token <i> PARSEOP_RANGETYPE_ENTIRE
307 %token <i> PARSEOP_RANGETYPE_ISAONLY
308 %token <i> PARSEOP_RANGETYPE_NONISAONLY
309 %token <i> PARSEOP_RAW_DATA
310 %token <i> PARSEOP_READWRITETYPE_BOTH
311 %token <i> PARSEOP_READWRITETYPE_READONLY
312 %token <i> PARSEOP_REFOF
313 %token <i> PARSEOP_REGIONSPACE_CMOS
314 %token <i> PARSEOP_REGIONSPACE_EC
315 %token <i> PARSEOP_REGIONSPACE_IO
316 %token <i> PARSEOP_REGIONSPACE_IPMI
317 %token <i> PARSEOP_REGIONSPACE_MEM
318 %token <i> PARSEOP_REGIONSPACE_PCI
319 %token <i> PARSEOP_REGIONSPACE_PCIBAR
320 %token <i> PARSEOP_REGIONSPACE_SMBUS
321 %token <i> PARSEOP_REGISTER
322 %token <i> PARSEOP_RELEASE
323 %token <i> PARSEOP_RESERVED_BYTES
324 %token <i> PARSEOP_RESET
325 %token <i> PARSEOP_RESOURCETEMPLATE
326 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
327 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
328 %token <i> PARSEOP_RETURN
329 %token <i> PARSEOP_REVISION
330 %token <i> PARSEOP_SCOPE
331 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
332 %token <i> PARSEOP_SERIALIZERULE_SERIAL
333 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
334 %token <i> PARSEOP_SHARETYPE_SHARED
335 %token <i> PARSEOP_SHIFTLEFT
336 %token <i> PARSEOP_SHIFTRIGHT
337 %token <i> PARSEOP_SIGNAL
338 %token <i> PARSEOP_SIZEOF
339 %token <i> PARSEOP_SLEEP
340 %token <i> PARSEOP_STALL
341 %token <i> PARSEOP_STARTDEPENDENTFN
342 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
343 %token <i> PARSEOP_STORE
344 %token <s> PARSEOP_STRING_LITERAL
345 %token <i> PARSEOP_SUBTRACT
346 %token <i> PARSEOP_SWITCH
347 %token <i> PARSEOP_THERMALZONE
348 %token <i> PARSEOP_TIMER
349 %token <i> PARSEOP_TOBCD
350 %token <i> PARSEOP_TOBUFFER
351 %token <i> PARSEOP_TODECIMALSTRING
352 %token <i> PARSEOP_TOHEXSTRING
353 %token <i> PARSEOP_TOINTEGER
354 %token <i> PARSEOP_TOSTRING
355 %token <i> PARSEOP_TOUUID
356 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
357 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
358 %token <i> PARSEOP_TYPE_STATIC
359 %token <i> PARSEOP_TYPE_TRANSLATION
360 %token <i> PARSEOP_UNICODE
361 %token <i> PARSEOP_UNLOAD
362 %token <i> PARSEOP_UPDATERULE_ONES
363 %token <i> PARSEOP_UPDATERULE_PRESERVE
364 %token <i> PARSEOP_UPDATERULE_ZEROS
365 %token <i> PARSEOP_VAR_PACKAGE
366 %token <i> PARSEOP_VENDORLONG
367 %token <i> PARSEOP_VENDORSHORT
368 %token <i> PARSEOP_WAIT
369 %token <i> PARSEOP_WHILE
370 %token <i> PARSEOP_WORDBUSNUMBER
371 %token <i> PARSEOP_WORDCONST
372 %token <i> PARSEOP_WORDIO
373 %token <i> PARSEOP_WORDSPACE
374 %token <i> PARSEOP_XFERTYPE_8
375 %token <i> PARSEOP_XFERTYPE_8_16
376 %token <i> PARSEOP_XFERTYPE_16
377 %token <i> PARSEOP_XOR
378 %token <i> PARSEOP_ZERO
381 * Special functions. These should probably stay at the end of this
384 %token <i> PARSEOP___DATE__
385 %token <i> PARSEOP___FILE__
386 %token <i> PARSEOP___LINE__
393 %type <n> DefinitionBlockTerm
396 %type <n> CompilerDirective
401 %type <n> PackageData
402 %type <n> IntegerData
404 %type <n> NamedObject
405 %type <n> NameSpaceModifier
410 %type <n> RequiredTarget
411 %type <n> SimpleTarget
412 %type <n> BufferTermData
413 %type <n> ParameterTypePackage
414 %type <n> ParameterTypePackageList
415 %type <n> ParameterTypesPackage
416 %type <n> ParameterTypesPackageList
418 %type <n> Type1Opcode
419 %type <n> Type2Opcode
420 %type <n> Type2IntegerOpcode
421 %type <n> Type2StringOpcode
422 %type <n> Type2BufferOpcode
423 %type <n> Type2BufferOrStringOpcode
424 %type <n> Type3Opcode
426 /* Obsolete %type <n> Type4Opcode */
428 %type <n> Type5Opcode
429 %type <n> Type6Opcode
432 %type <n> IncludeTerm
433 %type <n> IncludeCStyleTerm
434 %type <n> ExternalTerm
436 %type <n> FieldUnitList
438 %type <n> FieldUnitEntry
441 %type <n> AccessAsTerm
442 %type <n> OptionalAccessAttribTerm
447 %type <n> BankFieldTerm
448 %type <n> CreateBitFieldTerm
449 %type <n> CreateByteFieldTerm
450 %type <n> CreateDWordFieldTerm
451 %type <n> CreateFieldTerm
452 %type <n> CreateQWordFieldTerm
453 %type <n> CreateWordFieldTerm
454 %type <n> DataRegionTerm
458 %type <n> FunctionTerm
459 %type <n> IndexFieldTerm
462 %type <n> OpRegionTerm
463 %type <n> OpRegionSpaceIdTerm
464 %type <n> PowerResTerm
465 %type <n> ProcessorTerm
466 %type <n> ThermalZoneTerm
469 /* Namespace modifiers */
478 %type <n> BreakPointTerm
479 %type <n> ContinueTerm
487 %type <n> ReleaseTerm
494 %type <n> CaseDefaultTermList
495 //%type <n> CaseTermList
497 %type <n> DefaultTerm
503 %type <n> AcquireTerm
507 %type <n> ConcatResTerm
508 %type <n> CondRefOfTerm
509 %type <n> CopyObjectTerm
511 %type <n> DerefOfTerm
513 %type <n> FindSetLeftBitTerm
514 %type <n> FindSetRightBitTerm
515 %type <n> FromBCDTerm
520 %type <n> LGreaterTerm
521 %type <n> LGreaterEqualTerm
523 %type <n> LLessEqualTerm
525 %type <n> LNotEqualTerm
526 %type <n> LoadTableTerm
531 %type <n> MultiplyTerm
535 %type <n> ObjectTypeTerm
538 %type <n> ShiftLeftTerm
539 %type <n> ShiftRightTerm
542 %type <n> SubtractTerm
545 %type <n> ToBufferTerm
546 %type <n> ToDecimalStringTerm
547 %type <n> ToHexStringTerm
548 %type <n> ToIntegerTerm
549 %type <n> ToStringTerm
553 %type <n> OptionalTermArg
554 %type <n> OptionalReturnArg
555 %type <n> OptionalListString
560 %type <n> ObjectTypeKeyword
561 %type <n> AccessTypeKeyword
562 %type <n> AccessAttribKeyword
563 %type <n> LockRuleKeyword
564 %type <n> UpdateRuleKeyword
565 %type <n> RegionSpaceKeyword
566 %type <n> AddressSpaceKeyword
567 %type <n> MatchOpKeyword
568 %type <n> SerializeRuleKeyword
569 %type <n> DMATypeKeyword
570 %type <n> OptionalBusMasterKeyword
571 %type <n> XferTypeKeyword
572 %type <n> ResourceTypeKeyword
575 %type <n> DecodeKeyword
576 %type <n> RangeTypeKeyword
577 %type <n> MemTypeKeyword
578 %type <n> OptionalReadWriteKeyword
579 %type <n> InterruptTypeKeyword
580 %type <n> InterruptLevel
581 %type <n> ShareTypeKeyword
582 %type <n> IODecodeKeyword
583 %type <n> TypeKeyword
584 %type <n> TranslationKeyword
585 %type <n> AddressKeyword
602 %type <n> ByteConstExpr
603 %type <n> WordConstExpr
604 %type <n> DWordConstExpr
605 %type <n> QWordConstExpr
606 %type <n> ConstExprTerm
612 %type <n> PackageTerm
613 %type <n> PackageList
614 %type <n> PackageElement
616 %type <n> VarPackageLengthTerm
621 %type <n> ResourceTemplateTerm
623 %type <n> UnicodeTerm
624 %type <n> ResourceMacroList
625 %type <n> ResourceMacroTerm
628 %type <n> DWordIOTerm
629 %type <n> DWordMemoryTerm
630 %type <n> DWordSpaceTerm
631 %type <n> EndDependentFnTerm
632 %type <n> ExtendedIOTerm
633 %type <n> ExtendedMemoryTerm
634 %type <n> ExtendedSpaceTerm
635 %type <n> FixedIOTerm
636 %type <n> InterruptTerm
638 %type <n> IRQNoFlagsTerm
640 %type <n> Memory24Term
641 %type <n> Memory32FixedTerm
642 %type <n> Memory32Term
643 %type <n> QWordIOTerm
644 %type <n> QWordMemoryTerm
645 %type <n> QWordSpaceTerm
646 %type <n> RegisterTerm
647 %type <n> StartDependentFnTerm
648 %type <n> StartDependentFnNoPriTerm
649 %type <n> VendorLongTerm
650 %type <n> VendorShortTerm
651 %type <n> WordBusNumberTerm
653 %type <n> WordSpaceTerm
659 /* Local types that help construct the AML, not in ACPI spec */
661 %type <n> IncludeEndTerm
662 %type <n> AmlPackageLengthTerm
663 %type <n> OptionalByteConstExpr
664 %type <n> OptionalDWordConstExpr
665 %type <n> OptionalQWordConstExpr
666 %type <n> OptionalSerializeRuleKeyword
667 %type <n> OptionalResourceType_First
668 %type <n> OptionalResourceType
669 %type <n> OptionalMinType
670 %type <n> OptionalMaxType
671 %type <n> OptionalMemType
672 %type <n> OptionalCount
673 %type <n> OptionalDecodeType
674 %type <n> OptionalRangeType
675 %type <n> OptionalShareType
676 %type <n> OptionalType
677 %type <n> OptionalType_Last
678 %type <n> OptionalTranslationType_Last
679 %type <n> OptionalStringData
680 %type <n> OptionalNameString
681 %type <n> OptionalNameString_First
682 %type <n> OptionalNameString_Last
683 %type <n> OptionalAddressRange
684 %type <n> OptionalObjectTypeKeyword
685 %type <n> OptionalParameterTypePackage
686 %type <n> OptionalParameterTypesPackage
687 %type <n> OptionalReference
688 %type <n> OptionalAccessSize
690 %type <n> TermArgItem
691 %type <n> NameStringItem
696 /*******************************************************************************
698 * Production rules start here
700 ******************************************************************************/
708 * Blocks, Data, and Opcodes
712 : DefinitionBlockTerm
713 | error {YYABORT; $$ = NULL;}
717 * Note concerning support for "module-level code".
719 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
720 * methods (the so-called module-level code.) This support was explicitly
721 * removed in ACPI 2.0, but this type of code continues to be created by
722 * BIOS vendors. In order to support the disassembly and recompilation of
723 * such code (and the porting of ASL code to iASL), iASL supports this
724 * code in violation of the current ACPI specification.
726 * The grammar change to support module-level code is to revert the
727 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
728 * original use of {TermList} instead (see below.) This allows the use
729 * of Type1 and Type2 opcodes at module level.
732 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
739 ')' {TrSetEndLineNumber ($<n>3);}
740 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
743 /* ACPI 3.0 -- allow semicolons between terms */
747 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
748 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
755 | Type2IntegerOpcode {}
756 | Type2StringOpcode {}
757 | Type2BufferOpcode {}
758 | Type2BufferOrStringOpcode {}
759 | error {$$ = AslDoError(); yyclearin;}
764 | IncludeCStyleTerm {$$ = NULL;}
765 | LineTerm {$$ = NULL;}
771 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
772 | error {$$ = AslDoError(); yyclearin;}
776 : CompilerDirective {}
778 | NameSpaceModifier {}
789 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
790 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
791 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
800 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
801 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
807 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
813 | CreateBitFieldTerm {}
814 | CreateByteFieldTerm {}
815 | CreateDWordFieldTerm {}
817 | CreateQWordFieldTerm {}
818 | CreateWordFieldTerm {}
840 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
841 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
847 | ArgList ',' /* Allows a trailing comma at list end */
849 TermArg {$$ = TrLinkPeerNode ($1,$3);}
853 Removed from TermArg due to reduce/reduce conflicts
854 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
855 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
856 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
857 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
862 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
863 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
864 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
865 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
866 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
870 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
871 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
872 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
876 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
885 /* Rules for specifying the type of one method argument or return value */
889 | ObjectTypeKeyword {$$ = $1;}
890 | ParameterTypePackage ','
891 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
894 ParameterTypePackageList
896 | ObjectTypeKeyword {$$ = $1;}
897 | '{' ParameterTypePackage '}' {$$ = $2;}
900 OptionalParameterTypePackage
901 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
902 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
905 /* Rules for specifying the types for method arguments */
907 ParameterTypesPackage
908 : ParameterTypePackageList {$$ = $1;}
909 | ParameterTypesPackage ','
910 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
913 ParameterTypesPackageList
915 | ObjectTypeKeyword {$$ = $1;}
916 | '{' ParameterTypesPackage '}' {$$ = $2;}
919 OptionalParameterTypesPackage
920 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
921 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
965 Type2IntegerOpcode /* "Type3" opcodes */
970 | FindSetLeftBitTerm {}
971 | FindSetRightBitTerm {}
978 | LGreaterEqualTerm {}
1000 Type2StringOpcode /* "Type4" Opcodes */
1001 : ToDecimalStringTerm {}
1002 | ToHexStringTerm {}
1006 Type2BufferOpcode /* "Type5" Opcodes */
1011 Type2BufferOrStringOpcode
1017 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1027 | ToDecimalStringTerm {}
1028 | ToHexStringTerm {}
1036 : ResourceTemplateTerm {}
1049 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1050 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1052 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1056 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1060 : PARSEOP_INCLUDE_CSTYLE
1061 String {FlOpenIncludeFile ($2);}
1065 : PARSEOP_LINE_CSTYLE
1066 Integer {FlSetLineNumber ($2);}
1070 : PARSEOP_EXTERNAL '('
1072 OptionalObjectTypeKeyword
1073 OptionalParameterTypePackage
1074 OptionalParameterTypesPackage
1075 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1076 | PARSEOP_EXTERNAL '('
1077 error ')' {$$ = AslDoError(); yyclearin;}
1081 /******* Named Objects *******************************************************/
1085 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1089 ',' AccessTypeKeyword
1091 ',' UpdateRuleKeyword
1093 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1094 | PARSEOP_BANKFIELD '('
1095 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1101 | FieldUnitList ',' /* Allows a trailing comma at list end */
1103 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1113 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1115 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1119 : PARSEOP_OFFSET '('
1120 AmlPackageLengthTerm
1121 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1122 | PARSEOP_OFFSET '('
1123 error ')' {$$ = AslDoError(); yyclearin;}
1127 : PARSEOP_ACCESSAS '('
1129 OptionalAccessAttribTerm
1130 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1131 | PARSEOP_ACCESSAS '('
1132 error ')' {$$ = AslDoError(); yyclearin;}
1136 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1140 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1141 | PARSEOP_CREATEBITFIELD '('
1142 error ')' {$$ = AslDoError(); yyclearin;}
1146 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1150 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1151 | PARSEOP_CREATEBYTEFIELD '('
1152 error ')' {$$ = AslDoError(); yyclearin;}
1155 CreateDWordFieldTerm
1156 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1160 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1161 | PARSEOP_CREATEDWORDFIELD '('
1162 error ')' {$$ = AslDoError(); yyclearin;}
1166 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1171 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1172 | PARSEOP_CREATEFIELD '('
1173 error ')' {$$ = AslDoError(); yyclearin;}
1176 CreateQWordFieldTerm
1177 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1181 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1182 | PARSEOP_CREATEQWORDFIELD '('
1183 error ')' {$$ = AslDoError(); yyclearin;}
1187 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1191 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1192 | PARSEOP_CREATEWORDFIELD '('
1193 error ')' {$$ = AslDoError(); yyclearin;}
1197 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1202 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1203 | PARSEOP_DATATABLEREGION '('
1204 error ')' {$$ = AslDoError(); yyclearin;}
1208 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1211 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1212 | PARSEOP_DEVICE '('
1213 error ')' {$$ = AslDoError(); yyclearin;}
1217 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
1219 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1221 error ')' {$$ = AslDoError(); yyclearin;}
1225 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
1227 ',' AccessTypeKeyword
1229 ',' UpdateRuleKeyword
1231 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1233 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1237 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1239 OptionalParameterTypePackage
1240 OptionalParameterTypesPackage
1242 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1243 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1244 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1245 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1246 | PARSEOP_FUNCTION '('
1247 error ')' {$$ = AslDoError(); yyclearin;}
1251 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1254 ',' AccessTypeKeyword
1256 ',' UpdateRuleKeyword
1258 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1259 | PARSEOP_INDEXFIELD '('
1260 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1264 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1266 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1267 OptionalSerializeRuleKeyword
1268 OptionalByteConstExpr
1269 OptionalParameterTypePackage
1270 OptionalParameterTypesPackage
1272 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1273 | PARSEOP_METHOD '('
1274 error ')' {$$ = AslDoError(); yyclearin;}
1278 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1281 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1283 error ')' {$$ = AslDoError(); yyclearin;}
1287 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1289 ',' OpRegionSpaceIdTerm
1292 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1293 | PARSEOP_OPERATIONREGION '('
1294 error ')' {$$ = AslDoError(); yyclearin;}
1298 : RegionSpaceKeyword {}
1299 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1303 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1308 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1309 | PARSEOP_POWERRESOURCE '('
1310 error ')' {$$ = AslDoError(); yyclearin;}
1314 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1317 OptionalDWordConstExpr
1318 OptionalByteConstExpr
1320 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1321 | PARSEOP_PROCESSOR '('
1322 error ')' {$$ = AslDoError(); yyclearin;}
1326 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1329 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1330 | PARSEOP_THERMALZONE '('
1331 error ')' {$$ = AslDoError(); yyclearin;}
1335 /******* Namespace modifiers *************************************************/
1339 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1342 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1344 error ')' {$$ = AslDoError(); yyclearin;}
1348 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1351 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1353 error ')' {$$ = AslDoError(); yyclearin;}
1357 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1360 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1362 error ')' {$$ = AslDoError(); yyclearin;}
1366 /******* Type 1 opcodes *******************************************************/
1370 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1374 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1378 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1382 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
1386 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1388 error ')' {$$ = AslDoError(); yyclearin;}
1392 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1396 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1399 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1402 error ')' {$$ = AslDoError(); yyclearin;}
1407 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1408 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1411 error '}' {$$ = AslDoError(); yyclearin;}
1414 error {$$ = AslDoError(); yyclearin;}
1416 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1417 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1419 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
1420 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
1421 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1423 | PARSEOP_ELSEIF '('
1424 error ')' {$$ = AslDoError(); yyclearin;}
1427 error {$$ = AslDoError(); yyclearin;}
1431 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1434 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1436 error ')' {$$ = AslDoError(); yyclearin;}
1440 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1444 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1447 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1448 | PARSEOP_NOTIFY '('
1449 error ')' {$$ = AslDoError(); yyclearin;}
1453 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1455 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1456 | PARSEOP_RELEASE '('
1457 error ')' {$$ = AslDoError(); yyclearin;}
1461 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1463 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1465 error ')' {$$ = AslDoError(); yyclearin;}
1469 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1471 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1472 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1473 | PARSEOP_RETURN '('
1474 error ')' {$$ = AslDoError(); yyclearin;}
1478 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1480 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1481 | PARSEOP_SIGNAL '('
1482 error ')' {$$ = AslDoError(); yyclearin;}
1486 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1488 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1490 error ')' {$$ = AslDoError(); yyclearin;}
1494 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1496 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1498 error ')' {$$ = AslDoError(); yyclearin;}
1502 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1505 CaseDefaultTermList '}'
1506 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1507 | PARSEOP_SWITCH '('
1508 error ')' {$$ = AslDoError(); yyclearin;}
1512 * Case-Default list; allow only one Default term and unlimited Case terms
1519 | CaseDefaultTermList
1520 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1521 | CaseDefaultTermList
1522 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1524 /* Original - attempts to force zero or one default term within the switch */
1531 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1533 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1540 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1545 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1548 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1550 error ')' {$$ = AslDoError(); yyclearin;}
1554 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1555 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1556 | PARSEOP_DEFAULT '{'
1557 error '}' {$$ = AslDoError(); yyclearin;}
1561 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1563 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1564 | PARSEOP_UNLOAD '('
1565 error ')' {$$ = AslDoError(); yyclearin;}
1569 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1571 ')' '{' TermList '}'
1572 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1574 error ')' {$$ = AslDoError(); yyclearin;}
1578 /******* Type 2 opcodes *******************************************************/
1581 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1584 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1585 | PARSEOP_ACQUIRE '('
1586 error ')' {$$ = AslDoError(); yyclearin;}
1590 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1594 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1596 error ')' {$$ = AslDoError(); yyclearin;}
1600 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1604 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1606 error ')' {$$ = AslDoError(); yyclearin;}
1610 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1614 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1615 | PARSEOP_CONCATENATE '('
1616 error ')' {$$ = AslDoError(); yyclearin;}
1620 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1624 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1625 | PARSEOP_CONCATENATERESTEMPLATE '('
1626 error ')' {$$ = AslDoError(); yyclearin;}
1630 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1633 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1634 | PARSEOP_CONDREFOF '('
1635 error ')' {$$ = AslDoError(); yyclearin;}
1639 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1642 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1643 | PARSEOP_COPYOBJECT '('
1644 error ')' {$$ = AslDoError(); yyclearin;}
1648 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1650 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1651 | PARSEOP_DECREMENT '('
1652 error ')' {$$ = AslDoError(); yyclearin;}
1656 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1658 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1659 | PARSEOP_DEREFOF '('
1660 error ')' {$$ = AslDoError(); yyclearin;}
1664 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1669 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1670 | PARSEOP_DIVIDE '('
1671 error ')' {$$ = AslDoError(); yyclearin;}
1675 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1678 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1679 | PARSEOP_FINDSETLEFTBIT '('
1680 error ')' {$$ = AslDoError(); yyclearin;}
1684 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1687 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1688 | PARSEOP_FINDSETRIGHTBIT '('
1689 error ')' {$$ = AslDoError(); yyclearin;}
1693 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1696 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1697 | PARSEOP_FROMBCD '('
1698 error ')' {$$ = AslDoError(); yyclearin;}
1702 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1704 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1705 | PARSEOP_INCREMENT '('
1706 error ')' {$$ = AslDoError(); yyclearin;}
1710 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1714 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1716 error ')' {$$ = AslDoError(); yyclearin;}
1720 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1723 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1725 error ')' {$$ = AslDoError(); yyclearin;}
1729 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1732 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1733 | PARSEOP_LEQUAL '('
1734 error ')' {$$ = AslDoError(); yyclearin;}
1738 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1741 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1742 | PARSEOP_LGREATER '('
1743 error ')' {$$ = AslDoError(); yyclearin;}
1747 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1750 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1751 | PARSEOP_LGREATEREQUAL '('
1752 error ')' {$$ = AslDoError(); yyclearin;}
1756 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1759 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1761 error ')' {$$ = AslDoError(); yyclearin;}
1765 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1768 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1769 | PARSEOP_LLESSEQUAL '('
1770 error ')' {$$ = AslDoError(); yyclearin;}
1774 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1776 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1778 error ')' {$$ = AslDoError(); yyclearin;}
1782 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1785 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1786 | PARSEOP_LNOTEQUAL '('
1787 error ')' {$$ = AslDoError(); yyclearin;}
1791 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1798 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1799 | PARSEOP_LOADTABLE '('
1800 error ')' {$$ = AslDoError(); yyclearin;}
1804 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1807 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1809 error ')' {$$ = AslDoError(); yyclearin;}
1813 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1820 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1822 error ')' {$$ = AslDoError(); yyclearin;}
1826 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1831 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1833 error ')' {$$ = AslDoError(); yyclearin;}
1837 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1841 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1843 error ')' {$$ = AslDoError(); yyclearin;}
1847 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1851 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1852 | PARSEOP_MULTIPLY '('
1853 error ')' {$$ = AslDoError(); yyclearin;}
1857 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1861 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1863 error ')' {$$ = AslDoError(); yyclearin;}
1867 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1871 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1873 error ')' {$$ = AslDoError(); yyclearin;}
1877 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1880 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1882 error ')' {$$ = AslDoError(); yyclearin;}
1886 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1888 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1889 | PARSEOP_OBJECTTYPE '('
1890 error ')' {$$ = AslDoError(); yyclearin;}
1894 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
1898 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1900 error ')' {$$ = AslDoError(); yyclearin;}
1904 * In RefOf, the node isn't really a target, but we can't keep track of it after
1905 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
1908 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
1910 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
1912 error ')' {$$ = AslDoError(); yyclearin;}
1916 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
1920 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1921 | PARSEOP_SHIFTLEFT '('
1922 error ')' {$$ = AslDoError(); yyclearin;}
1926 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
1930 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1931 | PARSEOP_SHIFTRIGHT '('
1932 error ')' {$$ = AslDoError(); yyclearin;}
1936 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
1938 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1939 | PARSEOP_SIZEOF '('
1940 error ')' {$$ = AslDoError(); yyclearin;}
1944 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
1947 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1949 error ')' {$$ = AslDoError(); yyclearin;}
1953 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
1957 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1958 | PARSEOP_SUBTRACT '('
1959 error ')' {$$ = AslDoError(); yyclearin;}
1963 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
1964 ')' {$$ = TrLinkChildren ($<n>3,0);}
1965 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
1967 error ')' {$$ = AslDoError(); yyclearin;}
1971 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
1974 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1976 error ')' {$$ = AslDoError(); yyclearin;}
1980 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
1983 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1984 | PARSEOP_TOBUFFER '('
1985 error ')' {$$ = AslDoError(); yyclearin;}
1989 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
1992 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1993 | PARSEOP_TODECIMALSTRING '('
1994 error ')' {$$ = AslDoError(); yyclearin;}
1998 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2001 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2002 | PARSEOP_TOHEXSTRING '('
2003 error ')' {$$ = AslDoError(); yyclearin;}
2007 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2010 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2011 | PARSEOP_TOINTEGER '('
2012 error ')' {$$ = AslDoError(); yyclearin;}
2016 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2020 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2021 | PARSEOP_TOSTRING '('
2022 error ')' {$$ = AslDoError(); yyclearin;}
2026 : PARSEOP_TOUUID '('
2027 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2028 | PARSEOP_TOUUID '('
2029 error ')' {$$ = AslDoError(); yyclearin;}
2033 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
2036 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2038 error ')' {$$ = AslDoError(); yyclearin;}
2042 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
2046 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2048 error ')' {$$ = AslDoError(); yyclearin;}
2052 /******* Keywords *************************************************************/
2056 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2057 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2058 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2059 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2060 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2061 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2062 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2063 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2064 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2065 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2066 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2067 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2068 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2069 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2070 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2071 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2075 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2076 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2077 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2078 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2079 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2080 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2084 : PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2085 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2086 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2087 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2088 | PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2089 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2090 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2094 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2095 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2099 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2100 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2101 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2106 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2107 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2108 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2109 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2110 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2111 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2112 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2113 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
2117 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2118 | RegionSpaceKeyword {}
2119 | PARSEOP_ADDRESSSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
2123 SerializeRuleKeyword
2124 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2125 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2129 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2130 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2131 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2132 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2133 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2134 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2138 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2139 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2140 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2141 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2145 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2146 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2147 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2151 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2152 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2156 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2157 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2161 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2162 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2166 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2167 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2171 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2172 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2173 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2177 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2178 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2179 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2180 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2183 OptionalReadWriteKeyword
2184 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2185 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
2186 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
2189 InterruptTypeKeyword
2190 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2191 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2195 : PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2196 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2200 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2201 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2205 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2206 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2210 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2211 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2215 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2216 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2220 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2221 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2222 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2223 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2227 /******* Miscellaneous Types **************************************************/
2236 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2240 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2241 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2242 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2243 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2244 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2245 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2246 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2250 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2251 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2252 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2253 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2254 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2255 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2256 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2257 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2261 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2266 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2270 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2274 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2278 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2282 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2286 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2291 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2295 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2296 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2297 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2302 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2303 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2304 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2309 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2310 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2311 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2316 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2317 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2318 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2323 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2324 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2325 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
2326 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
2327 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
2328 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
2331 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2334 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2335 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2336 | ',' TermArg {$$ = $2;}
2341 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2344 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2345 | PARSEOP_BUFFER '('
2346 error ')' {$$ = AslDoError(); yyclearin;}
2357 | ByteList ',' /* Allows a trailing comma at list end */
2359 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2365 | DWordList ',' /* Allows a trailing comma at list end */
2367 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2371 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2372 VarPackageLengthTerm
2374 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2375 | PARSEOP_PACKAGE '('
2376 error ')' {$$ = AslDoError(); yyclearin;}
2379 VarPackageLengthTerm
2380 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2381 | TermArg {$$ = $1;}
2387 | PackageList ',' /* Allows a trailing comma at list end */
2389 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2398 : PARSEOP_EISAID '('
2399 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2400 | PARSEOP_EISAID '('
2401 error ')' {$$ = AslDoError(); yyclearin;}
2405 /******* Resources and Memory ***********************************************/
2409 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2410 * Also, insert the EndTag at the end of the template.
2412 ResourceTemplateTerm
2413 : PARSEOP_RESOURCETEMPLATE '(' ')'
2415 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2416 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2417 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2419 TrCreateLeafNode (PARSEOP_ENDTAG));}
2423 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2425 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2426 | PARSEOP_UNICODE '('
2427 error ')' {$$ = AslDoError(); yyclearin;}
2433 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2439 | DWordMemoryTerm {}
2441 | EndDependentFnTerm {}
2443 | ExtendedMemoryTerm {}
2444 | ExtendedSpaceTerm {}
2451 | Memory32FixedTerm {}
2454 | QWordMemoryTerm {}
2457 | StartDependentFnTerm {}
2458 | StartDependentFnNoPriTerm {}
2460 | VendorShortTerm {}
2461 | WordBusNumberTerm {}
2467 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2469 OptionalBusMasterKeyword
2471 OptionalNameString_Last
2473 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2475 error ')' {$$ = AslDoError(); yyclearin;}
2479 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2480 OptionalResourceType_First
2490 OptionalByteConstExpr
2494 OptionalTranslationType_Last
2495 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2496 | PARSEOP_DWORDIO '('
2497 error ')' {$$ = AslDoError(); yyclearin;}
2501 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2502 OptionalResourceType_First
2507 ',' OptionalReadWriteKeyword
2513 OptionalByteConstExpr
2516 OptionalAddressRange
2518 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2519 | PARSEOP_DWORDMEMORY '('
2520 error ')' {$$ = AslDoError(); yyclearin;}
2524 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2525 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2526 OptionalResourceType
2536 OptionalByteConstExpr
2538 OptionalNameString_Last
2539 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2540 | PARSEOP_DWORDSPACE '('
2541 error ')' {$$ = AslDoError(); yyclearin;}
2546 : PARSEOP_ENDDEPENDENTFN '('
2547 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2548 | PARSEOP_ENDDEPENDENTFN '('
2549 error ')' {$$ = AslDoError(); yyclearin;}
2553 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2554 OptionalResourceType_First
2564 OptionalQWordConstExpr
2567 OptionalTranslationType_Last
2568 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2569 | PARSEOP_EXTENDEDIO '('
2570 error ')' {$$ = AslDoError(); yyclearin;}
2574 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2575 OptionalResourceType_First
2580 ',' OptionalReadWriteKeyword
2586 OptionalQWordConstExpr
2588 OptionalAddressRange
2590 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2591 | PARSEOP_EXTENDEDMEMORY '('
2592 error ')' {$$ = AslDoError(); yyclearin;}
2596 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2597 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2598 OptionalResourceType
2608 OptionalQWordConstExpr
2609 OptionalNameString_Last
2610 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2611 | PARSEOP_EXTENDEDSPACE '('
2612 error ')' {$$ = AslDoError(); yyclearin;}
2616 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2619 OptionalNameString_Last
2620 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2621 | PARSEOP_FIXEDIO '('
2622 error ')' {$$ = AslDoError(); yyclearin;}
2626 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2627 OptionalResourceType_First
2628 ',' InterruptTypeKeyword
2631 OptionalByteConstExpr
2633 OptionalNameString_Last
2635 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2636 | PARSEOP_INTERRUPT '('
2637 error ')' {$$ = AslDoError(); yyclearin;}
2641 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2647 OptionalNameString_Last
2648 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2650 error ')' {$$ = AslDoError(); yyclearin;}
2654 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2655 OptionalNameString_First
2657 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2658 | PARSEOP_IRQNOFLAGS '('
2659 error ')' {$$ = AslDoError(); yyclearin;}
2663 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2664 InterruptTypeKeyword
2667 OptionalNameString_Last
2669 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2671 error ')' {$$ = AslDoError(); yyclearin;}
2675 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2676 OptionalReadWriteKeyword
2681 OptionalNameString_Last
2682 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2683 | PARSEOP_MEMORY24 '('
2684 error ')' {$$ = AslDoError(); yyclearin;}
2688 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2689 OptionalReadWriteKeyword
2692 OptionalNameString_Last
2693 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2694 | PARSEOP_MEMORY32FIXED '('
2695 error ')' {$$ = AslDoError(); yyclearin;}
2699 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2700 OptionalReadWriteKeyword
2705 OptionalNameString_Last
2706 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2707 | PARSEOP_MEMORY32 '('
2708 error ')' {$$ = AslDoError(); yyclearin;}
2712 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2713 OptionalResourceType_First
2723 OptionalByteConstExpr
2727 OptionalTranslationType_Last
2728 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2729 | PARSEOP_QWORDIO '('
2730 error ')' {$$ = AslDoError(); yyclearin;}
2734 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
2735 OptionalResourceType_First
2740 ',' OptionalReadWriteKeyword
2746 OptionalByteConstExpr
2749 OptionalAddressRange
2751 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2752 | PARSEOP_QWORDMEMORY '('
2753 error ')' {$$ = AslDoError(); yyclearin;}
2757 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
2758 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2759 OptionalResourceType
2769 OptionalByteConstExpr
2771 OptionalNameString_Last
2772 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2773 | PARSEOP_QWORDSPACE '('
2774 error ')' {$$ = AslDoError(); yyclearin;}
2778 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
2784 OptionalNameString_Last
2785 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
2786 | PARSEOP_REGISTER '('
2787 error ')' {$$ = AslDoError(); yyclearin;}
2790 StartDependentFnTerm
2791 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
2795 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
2796 | PARSEOP_STARTDEPENDENTFN '('
2797 error ')' {$$ = AslDoError(); yyclearin;}
2800 StartDependentFnNoPriTerm
2801 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
2803 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
2804 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
2805 error ')' {$$ = AslDoError(); yyclearin;}
2809 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
2810 OptionalNameString_First
2812 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2813 | PARSEOP_VENDORLONG '('
2814 error ')' {$$ = AslDoError(); yyclearin;}
2818 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
2819 OptionalNameString_First
2821 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2822 | PARSEOP_VENDORSHORT '('
2823 error ')' {$$ = AslDoError(); yyclearin;}
2827 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
2828 OptionalResourceType_First
2837 OptionalByteConstExpr
2839 OptionalNameString_Last
2840 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
2841 | PARSEOP_WORDBUSNUMBER '('
2842 error ')' {$$ = AslDoError(); yyclearin;}
2846 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
2847 OptionalResourceType_First
2857 OptionalByteConstExpr
2861 OptionalTranslationType_Last
2862 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2863 | PARSEOP_WORDIO '('
2864 error ')' {$$ = AslDoError(); yyclearin;}
2868 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
2869 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2870 OptionalResourceType
2880 OptionalByteConstExpr
2882 OptionalNameString_Last
2883 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2884 | PARSEOP_WORDSPACE '('
2885 error ')' {$$ = AslDoError(); yyclearin;}
2889 /******* Object References ***********************************************/
2891 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
2895 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2896 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
2897 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
2898 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
2902 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2906 /******* Helper rules ****************************************************/
2909 AmlPackageLengthTerm
2910 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
2913 OptionalBusMasterKeyword
2914 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2915 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
2916 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
2919 OptionalAccessAttribTerm
2922 | ',' ByteConstExpr {$$ = $2;}
2923 | ',' AccessAttribKeyword {$$ = $2;}
2927 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2928 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
2929 | ',' ByteConstExpr {$$ = $2;}
2932 OptionalAddressRange
2935 | ',' AddressKeyword {$$ = $2;}
2938 OptionalByteConstExpr
2941 | ',' ByteConstExpr {$$ = $2;}
2946 | ',' DecodeKeyword {$$ = $2;}
2949 OptionalDWordConstExpr
2952 | ',' DWordConstExpr {$$ = $2;}
2956 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2957 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
2958 | ',' TermArg {$$ = $2;}
2963 | ',' MaxKeyword {$$ = $2;}
2968 | ',' MemTypeKeyword {$$ = $2;}
2973 | ',' MinKeyword {$$ = $2;}
2979 | ',' NameString {$$ = $2;}
2982 OptionalNameString_Last
2985 | ',' NameString {$$ = $2;}
2988 OptionalNameString_First
2989 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
2990 | NameString {$$ = $1;}
2993 OptionalObjectTypeKeyword
2994 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2995 | ',' ObjectTypeKeyword {$$ = $2;}
2998 OptionalQWordConstExpr
3001 | ',' QWordConstExpr {$$ = $2;}
3006 | ',' RangeTypeKeyword {$$ = $2;}
3010 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3011 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3012 | ',' TermArg {$$ = $2;}
3015 OptionalResourceType_First
3017 | ResourceTypeKeyword {$$ = $1;}
3020 OptionalResourceType
3022 | ',' ResourceTypeKeyword {$$ = $2;}
3025 OptionalSerializeRuleKeyword
3028 | ',' SerializeRuleKeyword {$$ = $2;}
3034 | ',' ShareTypeKeyword {$$ = $2;}
3040 | ',' StringData {$$ = $2;}
3045 | TermArg {$$ = $1;}
3049 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
3050 | TermArg {$$ = $1;}
3056 | ',' TypeKeyword {$$ = $2;}
3062 | ',' TypeKeyword {$$ = $2;}
3065 OptionalTranslationType_Last
3068 | ',' TranslationKeyword {$$ = $2;}
3073 : ',' TermArg {$$ = $2;}
3074 | ',' error {$$ = AslDoError (); yyclearin;}
3078 : ',' NameString {$$ = $2;}
3079 | ',' error {$$ = AslDoError (); yyclearin;}
3086 * Local support functions
3090 AslCompilerwrap(void)
3095 /*! [End] no source code translation !*/
3098 AslLocalAllocate (unsigned int Size)
3103 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
3105 Mem = ACPI_ALLOCATE_ZEROED (Size);
3108 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3109 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3110 Gbl_InputByteCount, Gbl_CurrentColumn,
3111 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3123 return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3128 /*******************************************************************************
3130 * FUNCTION: UtGetOpName
3132 * PARAMETERS: ParseOpcode - Parser keyword ID
3134 * RETURN: Pointer to the opcode name
3136 * DESCRIPTION: Get the ascii name of the parse opcode
3138 ******************************************************************************/
3144 #ifdef ASL_YYTNAME_START
3146 * First entries (ASL_YYTNAME_START) in yytname are special reserved names.
3147 * Ignore first 8 characters of the name
3149 return ((char *) yytname
3150 [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8);
3152 return ("[Unknown parser generator]");