2 /******************************************************************************
4 * Module Name: aslcompiler.y - Bison/Yacc input file (ASL grammar and actions)
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions, and the following disclaimer,
17 * without modification.
18 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19 * substantially similar to the "NO WARRANTY" disclaimer below
20 * ("Disclaimer") and any redistribution must be conditioned upon
21 * including a substantially similar Disclaimer requirement for further
22 * binary redistribution.
23 * 3. Neither the names of the above-listed copyright holders nor the names
24 * of any contributors may be used to endorse or promote products derived
25 * from this software without specific prior written permission.
27 * Alternatively, this software may be distributed under the terms of the
28 * GNU General Public License ("GPL") version 2 as published by the Free
29 * Software Foundation.
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 * POSSIBILITY OF SUCH DAMAGES.
45 #include <contrib/dev/acpica/compiler/aslcompiler.h>
49 #include <contrib/dev/acpica/include/acpi.h>
50 #include <contrib/dev/acpica/include/accommon.h>
52 #define _COMPONENT ACPI_COMPILER
53 ACPI_MODULE_NAME ("aslparse")
58 * October 2005: The following list terms have been optimized (from the
59 * original ASL grammar in the ACPI specification) to force the immediate
60 * reduction of each list item so that the parse stack use doesn't increase on
61 * each list element and possibly overflow on very large lists (>4000 items).
62 * This dramatically reduces use of the parse stack overall.
64 * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList,
65 * ResourceMacroList, and FieldUnitList
68 void * AslLocalAllocate (unsigned int Size);
70 /* Bison/yacc configuration */
74 #define alloca AslLocalAllocate
75 #define yytname AslCompilername
77 #define YYINITDEPTH 600 /* State stack depth */
78 #define YYDEBUG 1 /* Enable debug output */
79 #define YYERROR_VERBOSE 1 /* Verbose error messages */
81 /* Define YYMALLOC/YYFREE to prevent redefinition errors */
83 #define YYMALLOC malloc
87 * The windows version of bison defines this incorrectly as "32768" (Not negative).
88 * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
89 * instead (#define YYFBAD 32768), so we can define it correctly here.
91 * The problem is that if YYFLAG is positive, the extended syntax error messages
99 * Declare the type of values in the grammar
104 ACPI_PARSE_OBJECT *n;
107 /*! [Begin] no source code translation */
110 * These shift/reduce conflicts are expected. There should be zero
111 * reduce/reduce conflicts.
115 /******************************************************************************
117 * Token types: These are returned by the lexer
119 * NOTE: This list MUST match the AslKeywordMapping table found
120 * in aslmap.c EXACTLY! Double check any changes!
122 *****************************************************************************/
124 %token <i> PARSEOP_ACCESSAS
125 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
126 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
127 %token <i> PARSEOP_ACCESSATTRIB_BYTE
128 %token <i> PARSEOP_ACCESSATTRIB_MULTIBYTE
129 %token <i> PARSEOP_ACCESSATTRIB_QUICK
130 %token <i> PARSEOP_ACCESSATTRIB_RAW_BYTES
131 %token <i> PARSEOP_ACCESSATTRIB_RAW_PROCESS
132 %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
133 %token <i> PARSEOP_ACCESSATTRIB_WORD
134 %token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
135 %token <i> PARSEOP_ACCESSTYPE_ANY
136 %token <i> PARSEOP_ACCESSTYPE_BUF
137 %token <i> PARSEOP_ACCESSTYPE_BYTE
138 %token <i> PARSEOP_ACCESSTYPE_DWORD
139 %token <i> PARSEOP_ACCESSTYPE_QWORD
140 %token <i> PARSEOP_ACCESSTYPE_WORD
141 %token <i> PARSEOP_ACQUIRE
142 %token <i> PARSEOP_ADD
143 %token <i> PARSEOP_ADDRESSINGMODE_7BIT
144 %token <i> PARSEOP_ADDRESSINGMODE_10BIT
145 %token <i> PARSEOP_ADDRESSTYPE_ACPI
146 %token <i> PARSEOP_ADDRESSTYPE_MEMORY
147 %token <i> PARSEOP_ADDRESSTYPE_NVS
148 %token <i> PARSEOP_ADDRESSTYPE_RESERVED
149 %token <i> PARSEOP_ALIAS
150 %token <i> PARSEOP_AND
151 %token <i> PARSEOP_ARG0
152 %token <i> PARSEOP_ARG1
153 %token <i> PARSEOP_ARG2
154 %token <i> PARSEOP_ARG3
155 %token <i> PARSEOP_ARG4
156 %token <i> PARSEOP_ARG5
157 %token <i> PARSEOP_ARG6
158 %token <i> PARSEOP_BANKFIELD
159 %token <i> PARSEOP_BITSPERBYTE_EIGHT
160 %token <i> PARSEOP_BITSPERBYTE_FIVE
161 %token <i> PARSEOP_BITSPERBYTE_NINE
162 %token <i> PARSEOP_BITSPERBYTE_SEVEN
163 %token <i> PARSEOP_BITSPERBYTE_SIX
164 %token <i> PARSEOP_BREAK
165 %token <i> PARSEOP_BREAKPOINT
166 %token <i> PARSEOP_BUFFER
167 %token <i> PARSEOP_BUSMASTERTYPE_MASTER
168 %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
169 %token <i> PARSEOP_BYTECONST
170 %token <i> PARSEOP_CASE
171 %token <i> PARSEOP_CLOCKPHASE_FIRST
172 %token <i> PARSEOP_CLOCKPHASE_SECOND
173 %token <i> PARSEOP_CLOCKPOLARITY_HIGH
174 %token <i> PARSEOP_CLOCKPOLARITY_LOW
175 %token <i> PARSEOP_CONCATENATE
176 %token <i> PARSEOP_CONCATENATERESTEMPLATE
177 %token <i> PARSEOP_CONDREFOF
178 %token <i> PARSEOP_CONNECTION
179 %token <i> PARSEOP_CONTINUE
180 %token <i> PARSEOP_COPYOBJECT
181 %token <i> PARSEOP_CREATEBITFIELD
182 %token <i> PARSEOP_CREATEBYTEFIELD
183 %token <i> PARSEOP_CREATEDWORDFIELD
184 %token <i> PARSEOP_CREATEFIELD
185 %token <i> PARSEOP_CREATEQWORDFIELD
186 %token <i> PARSEOP_CREATEWORDFIELD
187 %token <i> PARSEOP_DATABUFFER
188 %token <i> PARSEOP_DATATABLEREGION
189 %token <i> PARSEOP_DEBUG
190 %token <i> PARSEOP_DECODETYPE_POS
191 %token <i> PARSEOP_DECODETYPE_SUB
192 %token <i> PARSEOP_DECREMENT
193 %token <i> PARSEOP_DEFAULT
194 %token <i> PARSEOP_DEFAULT_ARG
195 %token <i> PARSEOP_DEFINITIONBLOCK
196 %token <i> PARSEOP_DEREFOF
197 %token <i> PARSEOP_DEVICE
198 %token <i> PARSEOP_DEVICEPOLARITY_HIGH
199 %token <i> PARSEOP_DEVICEPOLARITY_LOW
200 %token <i> PARSEOP_DIVIDE
201 %token <i> PARSEOP_DMA
202 %token <i> PARSEOP_DMATYPE_A
203 %token <i> PARSEOP_DMATYPE_COMPATIBILITY
204 %token <i> PARSEOP_DMATYPE_B
205 %token <i> PARSEOP_DMATYPE_F
206 %token <i> PARSEOP_DWORDCONST
207 %token <i> PARSEOP_DWORDIO
208 %token <i> PARSEOP_DWORDMEMORY
209 %token <i> PARSEOP_DWORDSPACE
210 %token <i> PARSEOP_EISAID
211 %token <i> PARSEOP_ELSE
212 %token <i> PARSEOP_ELSEIF
213 %token <i> PARSEOP_ENDDEPENDENTFN
214 %token <i> PARSEOP_ENDIAN_BIG
215 %token <i> PARSEOP_ENDIAN_LITTLE
216 %token <i> PARSEOP_ENDTAG
217 %token <i> PARSEOP_ERRORNODE
218 %token <i> PARSEOP_EVENT
219 %token <i> PARSEOP_EXTENDEDIO
220 %token <i> PARSEOP_EXTENDEDMEMORY
221 %token <i> PARSEOP_EXTENDEDSPACE
222 %token <i> PARSEOP_EXTERNAL
223 %token <i> PARSEOP_FATAL
224 %token <i> PARSEOP_FIELD
225 %token <i> PARSEOP_FINDSETLEFTBIT
226 %token <i> PARSEOP_FINDSETRIGHTBIT
227 %token <i> PARSEOP_FIXEDDMA
228 %token <i> PARSEOP_FIXEDIO
229 %token <i> PARSEOP_FLOWCONTROL_HW
230 %token <i> PARSEOP_FLOWCONTROL_NONE
231 %token <i> PARSEOP_FLOWCONTROL_SW
232 %token <i> PARSEOP_FROMBCD
233 %token <i> PARSEOP_FUNCTION
234 %token <i> PARSEOP_GPIO_INT
235 %token <i> PARSEOP_GPIO_IO
236 %token <i> PARSEOP_I2C_SERIALBUS
237 %token <i> PARSEOP_IF
238 %token <i> PARSEOP_INCLUDE
239 %token <i> PARSEOP_INCLUDE_CSTYLE
240 %token <i> PARSEOP_INCLUDE_END
241 %token <i> PARSEOP_INCREMENT
242 %token <i> PARSEOP_INDEX
243 %token <i> PARSEOP_INDEXFIELD
244 %token <i> PARSEOP_INTEGER
245 %token <i> PARSEOP_INTERRUPT
246 %token <i> PARSEOP_INTLEVEL_ACTIVEBOTH
247 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
248 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
249 %token <i> PARSEOP_INTTYPE_EDGE
250 %token <i> PARSEOP_INTTYPE_LEVEL
251 %token <i> PARSEOP_IO
252 %token <i> PARSEOP_IODECODETYPE_10
253 %token <i> PARSEOP_IODECODETYPE_16
254 %token <i> PARSEOP_IORESTRICT_IN
255 %token <i> PARSEOP_IORESTRICT_NONE
256 %token <i> PARSEOP_IORESTRICT_OUT
257 %token <i> PARSEOP_IORESTRICT_PRESERVE
258 %token <i> PARSEOP_IRQ
259 %token <i> PARSEOP_IRQNOFLAGS
260 %token <i> PARSEOP_LAND
261 %token <i> PARSEOP_LEQUAL
262 %token <i> PARSEOP_LGREATER
263 %token <i> PARSEOP_LGREATEREQUAL
264 %token <i> PARSEOP_LINE_CSTYLE
265 %token <i> PARSEOP_LLESS
266 %token <i> PARSEOP_LLESSEQUAL
267 %token <i> PARSEOP_LNOT
268 %token <i> PARSEOP_LNOTEQUAL
269 %token <i> PARSEOP_LOAD
270 %token <i> PARSEOP_LOADTABLE
271 %token <i> PARSEOP_LOCAL0
272 %token <i> PARSEOP_LOCAL1
273 %token <i> PARSEOP_LOCAL2
274 %token <i> PARSEOP_LOCAL3
275 %token <i> PARSEOP_LOCAL4
276 %token <i> PARSEOP_LOCAL5
277 %token <i> PARSEOP_LOCAL6
278 %token <i> PARSEOP_LOCAL7
279 %token <i> PARSEOP_LOCKRULE_LOCK
280 %token <i> PARSEOP_LOCKRULE_NOLOCK
281 %token <i> PARSEOP_LOR
282 %token <i> PARSEOP_MATCH
283 %token <i> PARSEOP_MATCHTYPE_MEQ
284 %token <i> PARSEOP_MATCHTYPE_MGE
285 %token <i> PARSEOP_MATCHTYPE_MGT
286 %token <i> PARSEOP_MATCHTYPE_MLE
287 %token <i> PARSEOP_MATCHTYPE_MLT
288 %token <i> PARSEOP_MATCHTYPE_MTR
289 %token <i> PARSEOP_MAXTYPE_FIXED
290 %token <i> PARSEOP_MAXTYPE_NOTFIXED
291 %token <i> PARSEOP_MEMORY24
292 %token <i> PARSEOP_MEMORY32
293 %token <i> PARSEOP_MEMORY32FIXED
294 %token <i> PARSEOP_MEMTYPE_CACHEABLE
295 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
296 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
297 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
298 %token <i> PARSEOP_METHOD
299 %token <i> PARSEOP_METHODCALL
300 %token <i> PARSEOP_MID
301 %token <i> PARSEOP_MINTYPE_FIXED
302 %token <i> PARSEOP_MINTYPE_NOTFIXED
303 %token <i> PARSEOP_MOD
304 %token <i> PARSEOP_MULTIPLY
305 %token <i> PARSEOP_MUTEX
306 %token <i> PARSEOP_NAME
307 %token <s> PARSEOP_NAMESEG
308 %token <s> PARSEOP_NAMESTRING
309 %token <i> PARSEOP_NAND
310 %token <i> PARSEOP_NOOP
311 %token <i> PARSEOP_NOR
312 %token <i> PARSEOP_NOT
313 %token <i> PARSEOP_NOTIFY
314 %token <i> PARSEOP_OBJECTTYPE
315 %token <i> PARSEOP_OBJECTTYPE_BFF
316 %token <i> PARSEOP_OBJECTTYPE_BUF
317 %token <i> PARSEOP_OBJECTTYPE_DDB
318 %token <i> PARSEOP_OBJECTTYPE_DEV
319 %token <i> PARSEOP_OBJECTTYPE_EVT
320 %token <i> PARSEOP_OBJECTTYPE_FLD
321 %token <i> PARSEOP_OBJECTTYPE_INT
322 %token <i> PARSEOP_OBJECTTYPE_MTH
323 %token <i> PARSEOP_OBJECTTYPE_MTX
324 %token <i> PARSEOP_OBJECTTYPE_OPR
325 %token <i> PARSEOP_OBJECTTYPE_PKG
326 %token <i> PARSEOP_OBJECTTYPE_POW
327 %token <i> PARSEOP_OBJECTTYPE_PRO
328 %token <i> PARSEOP_OBJECTTYPE_STR
329 %token <i> PARSEOP_OBJECTTYPE_THZ
330 %token <i> PARSEOP_OBJECTTYPE_UNK
331 %token <i> PARSEOP_OFFSET
332 %token <i> PARSEOP_ONE
333 %token <i> PARSEOP_ONES
334 %token <i> PARSEOP_OPERATIONREGION
335 %token <i> PARSEOP_OR
336 %token <i> PARSEOP_PACKAGE
337 %token <i> PARSEOP_PACKAGE_LENGTH
338 %token <i> PARSEOP_PARITYTYPE_EVEN
339 %token <i> PARSEOP_PARITYTYPE_MARK
340 %token <i> PARSEOP_PARITYTYPE_NONE
341 %token <i> PARSEOP_PARITYTYPE_ODD
342 %token <i> PARSEOP_PARITYTYPE_SPACE
343 %token <i> PARSEOP_PIN_NOPULL
344 %token <i> PARSEOP_PIN_PULLDEFAULT
345 %token <i> PARSEOP_PIN_PULLDOWN
346 %token <i> PARSEOP_PIN_PULLUP
347 %token <i> PARSEOP_POWERRESOURCE
348 %token <i> PARSEOP_PROCESSOR
349 %token <i> PARSEOP_QWORDCONST
350 %token <i> PARSEOP_QWORDIO
351 %token <i> PARSEOP_QWORDMEMORY
352 %token <i> PARSEOP_QWORDSPACE
353 %token <i> PARSEOP_RANGETYPE_ENTIRE
354 %token <i> PARSEOP_RANGETYPE_ISAONLY
355 %token <i> PARSEOP_RANGETYPE_NONISAONLY
356 %token <i> PARSEOP_RAW_DATA
357 %token <i> PARSEOP_READWRITETYPE_BOTH
358 %token <i> PARSEOP_READWRITETYPE_READONLY
359 %token <i> PARSEOP_REFOF
360 %token <i> PARSEOP_REGIONSPACE_CMOS
361 %token <i> PARSEOP_REGIONSPACE_EC
362 %token <i> PARSEOP_REGIONSPACE_FFIXEDHW
363 %token <i> PARSEOP_REGIONSPACE_GPIO
364 %token <i> PARSEOP_REGIONSPACE_GSBUS
365 %token <i> PARSEOP_REGIONSPACE_IO
366 %token <i> PARSEOP_REGIONSPACE_IPMI
367 %token <i> PARSEOP_REGIONSPACE_MEM
368 %token <i> PARSEOP_REGIONSPACE_PCI
369 %token <i> PARSEOP_REGIONSPACE_PCIBAR
370 %token <i> PARSEOP_REGIONSPACE_SMBUS
371 %token <i> PARSEOP_REGISTER
372 %token <i> PARSEOP_RELEASE
373 %token <i> PARSEOP_RESERVED_BYTES
374 %token <i> PARSEOP_RESET
375 %token <i> PARSEOP_RESOURCETEMPLATE
376 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
377 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
378 %token <i> PARSEOP_RETURN
379 %token <i> PARSEOP_REVISION
380 %token <i> PARSEOP_SCOPE
381 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
382 %token <i> PARSEOP_SERIALIZERULE_SERIAL
383 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
384 %token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
385 %token <i> PARSEOP_SHARETYPE_SHARED
386 %token <i> PARSEOP_SHARETYPE_SHAREDWAKE
387 %token <i> PARSEOP_SHIFTLEFT
388 %token <i> PARSEOP_SHIFTRIGHT
389 %token <i> PARSEOP_SIGNAL
390 %token <i> PARSEOP_SIZEOF
391 %token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
392 %token <i> PARSEOP_SLAVEMODE_DEVICEINIT
393 %token <i> PARSEOP_SLEEP
394 %token <i> PARSEOP_SPI_SERIALBUS
395 %token <i> PARSEOP_STALL
396 %token <i> PARSEOP_STARTDEPENDENTFN
397 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
398 %token <i> PARSEOP_STOPBITS_ONE
399 %token <i> PARSEOP_STOPBITS_ONEPLUSHALF
400 %token <i> PARSEOP_STOPBITS_TWO
401 %token <i> PARSEOP_STOPBITS_ZERO
402 %token <i> PARSEOP_STORE
403 %token <s> PARSEOP_STRING_LITERAL
404 %token <i> PARSEOP_SUBTRACT
405 %token <i> PARSEOP_SWITCH
406 %token <i> PARSEOP_THERMALZONE
407 %token <i> PARSEOP_TIMER
408 %token <i> PARSEOP_TOBCD
409 %token <i> PARSEOP_TOBUFFER
410 %token <i> PARSEOP_TODECIMALSTRING
411 %token <i> PARSEOP_TOHEXSTRING
412 %token <i> PARSEOP_TOINTEGER
413 %token <i> PARSEOP_TOSTRING
414 %token <i> PARSEOP_TOUUID
415 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
416 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
417 %token <i> PARSEOP_TYPE_STATIC
418 %token <i> PARSEOP_TYPE_TRANSLATION
419 %token <i> PARSEOP_UART_SERIALBUS
420 %token <i> PARSEOP_UNICODE
421 %token <i> PARSEOP_UNLOAD
422 %token <i> PARSEOP_UPDATERULE_ONES
423 %token <i> PARSEOP_UPDATERULE_PRESERVE
424 %token <i> PARSEOP_UPDATERULE_ZEROS
425 %token <i> PARSEOP_VAR_PACKAGE
426 %token <i> PARSEOP_VENDORLONG
427 %token <i> PARSEOP_VENDORSHORT
428 %token <i> PARSEOP_WAIT
429 %token <i> PARSEOP_WHILE
430 %token <i> PARSEOP_WIREMODE_FOUR
431 %token <i> PARSEOP_WIREMODE_THREE
432 %token <i> PARSEOP_WORDBUSNUMBER
433 %token <i> PARSEOP_WORDCONST
434 %token <i> PARSEOP_WORDIO
435 %token <i> PARSEOP_WORDSPACE
436 %token <i> PARSEOP_XFERSIZE_8
437 %token <i> PARSEOP_XFERSIZE_16
438 %token <i> PARSEOP_XFERSIZE_32
439 %token <i> PARSEOP_XFERSIZE_64
440 %token <i> PARSEOP_XFERSIZE_128
441 %token <i> PARSEOP_XFERSIZE_256
442 %token <i> PARSEOP_XFERTYPE_8
443 %token <i> PARSEOP_XFERTYPE_8_16
444 %token <i> PARSEOP_XFERTYPE_16
445 %token <i> PARSEOP_XOR
446 %token <i> PARSEOP_ZERO
449 * Special functions. These should probably stay at the end of this
452 %token <i> PARSEOP___DATE__
453 %token <i> PARSEOP___FILE__
454 %token <i> PARSEOP___LINE__
455 %token <i> PARSEOP___PATH__
458 /******************************************************************************
462 *****************************************************************************/
467 %type <n> BufferTermData
468 %type <n> CompilerDirective
470 %type <n> DefinitionBlockTerm
471 %type <n> IntegerData
472 %type <n> NamedObject
473 %type <n> NameSpaceModifier
476 %type <n> PackageData
477 %type <n> ParameterTypePackage
478 %type <n> ParameterTypePackageList
479 %type <n> ParameterTypesPackage
480 %type <n> ParameterTypesPackageList
481 %type <n> RequiredTarget
482 %type <n> SimpleTarget
490 /* Type4Opcode is obsolete */
492 %type <n> Type1Opcode
493 %type <n> Type2BufferOpcode
494 %type <n> Type2BufferOrStringOpcode
495 %type <n> Type2IntegerOpcode
496 %type <n> Type2Opcode
497 %type <n> Type2StringOpcode
498 %type <n> Type3Opcode
499 %type <n> Type5Opcode
500 %type <n> Type6Opcode
502 %type <n> AccessAsTerm
503 %type <n> ExternalTerm
505 %type <n> FieldUnitEntry
506 %type <n> FieldUnitList
507 %type <n> IncludeCStyleTerm
508 %type <n> IncludeTerm
511 %type <n> OptionalAccessAttribTerm
515 %type <n> BankFieldTerm
516 %type <n> CreateBitFieldTerm
517 %type <n> CreateByteFieldTerm
518 %type <n> CreateDWordFieldTerm
519 %type <n> CreateFieldTerm
520 %type <n> CreateQWordFieldTerm
521 %type <n> CreateWordFieldTerm
522 %type <n> DataRegionTerm
526 %type <n> FunctionTerm
527 %type <n> IndexFieldTerm
530 %type <n> OpRegionTerm
531 %type <n> OpRegionSpaceIdTerm
532 %type <n> PowerResTerm
533 %type <n> ProcessorTerm
534 %type <n> ThermalZoneTerm
536 /* Namespace modifiers */
544 %type <n> BreakPointTerm
546 %type <n> CaseDefaultTermList
548 %type <n> ContinueTerm
549 %type <n> DefaultTerm
557 %type <n> ReleaseTerm
566 //%type <n> CaseTermList
570 %type <n> AcquireTerm
573 %type <n> ConcatResTerm
575 %type <n> CondRefOfTerm
576 %type <n> CopyObjectTerm
578 %type <n> DerefOfTerm
580 %type <n> FindSetLeftBitTerm
581 %type <n> FindSetRightBitTerm
582 %type <n> FromBCDTerm
587 %type <n> LGreaterEqualTerm
588 %type <n> LGreaterTerm
589 %type <n> LLessEqualTerm
591 %type <n> LNotEqualTerm
593 %type <n> LoadTableTerm
598 %type <n> MultiplyTerm
602 %type <n> ObjectTypeTerm
605 %type <n> ShiftLeftTerm
606 %type <n> ShiftRightTerm
609 %type <n> SubtractTerm
612 %type <n> ToBufferTerm
613 %type <n> ToDecimalStringTerm
614 %type <n> ToHexStringTerm
615 %type <n> ToIntegerTerm
616 %type <n> ToStringTerm
622 %type <n> AccessAttribKeyword
623 %type <n> AccessTypeKeyword
624 %type <n> AddressingModeKeyword
625 %type <n> AddressKeyword
626 %type <n> AddressSpaceKeyword
627 %type <n> BitsPerByteKeyword
628 %type <n> ClockPhaseKeyword
629 %type <n> ClockPolarityKeyword
630 %type <n> DecodeKeyword
631 %type <n> DevicePolarityKeyword
632 %type <n> DMATypeKeyword
633 %type <n> EndianKeyword
634 %type <n> FlowControlKeyword
635 %type <n> InterruptLevel
636 %type <n> InterruptTypeKeyword
637 %type <n> IODecodeKeyword
638 %type <n> IoRestrictionKeyword
639 %type <n> LockRuleKeyword
640 %type <n> MatchOpKeyword
642 %type <n> MemTypeKeyword
644 %type <n> ObjectTypeKeyword
645 %type <n> OptionalBusMasterKeyword
646 %type <n> OptionalReadWriteKeyword
647 %type <n> ParityTypeKeyword
648 %type <n> PinConfigByte
649 %type <n> PinConfigKeyword
650 %type <n> RangeTypeKeyword
651 %type <n> RegionSpaceKeyword
652 %type <n> ResourceTypeKeyword
653 %type <n> SerializeRuleKeyword
654 %type <n> ShareTypeKeyword
655 %type <n> SlaveModeKeyword
656 %type <n> StopBitsKeyword
657 %type <n> TranslationKeyword
658 %type <n> TypeKeyword
659 %type <n> UpdateRuleKeyword
660 %type <n> WireModeKeyword
661 %type <n> XferSizeKeyword
662 %type <n> XferTypeKeyword
679 %type <n> ConstExprTerm
680 %type <n> ByteConstExpr
681 %type <n> WordConstExpr
682 %type <n> DWordConstExpr
683 %type <n> QWordConstExpr
689 %type <n> PackageElement
690 %type <n> PackageList
691 %type <n> PackageTerm
692 %type <n> VarPackageLengthTerm
697 %type <n> ResourceMacroList
698 %type <n> ResourceMacroTerm
699 %type <n> ResourceTemplateTerm
701 %type <n> UnicodeTerm
703 /* Resource Descriptors */
705 %type <n> ConnectionTerm
706 %type <n> DataBufferTerm
708 %type <n> DWordIOTerm
709 %type <n> DWordMemoryTerm
710 %type <n> DWordSpaceTerm
711 %type <n> EndDependentFnTerm
712 %type <n> ExtendedIOTerm
713 %type <n> ExtendedMemoryTerm
714 %type <n> ExtendedSpaceTerm
715 %type <n> FixedDmaTerm
716 %type <n> FixedIOTerm
717 %type <n> GpioIntTerm
719 %type <n> I2cSerialBusTerm
720 %type <n> InterruptTerm
722 %type <n> IRQNoFlagsTerm
724 %type <n> Memory24Term
725 %type <n> Memory32FixedTerm
726 %type <n> Memory32Term
729 %type <n> QWordIOTerm
730 %type <n> QWordMemoryTerm
731 %type <n> QWordSpaceTerm
732 %type <n> RegisterTerm
733 %type <n> SpiSerialBusTerm
734 %type <n> StartDependentFnNoPriTerm
735 %type <n> StartDependentFnTerm
736 %type <n> UartSerialBusTerm
737 %type <n> VendorLongTerm
738 %type <n> VendorShortTerm
739 %type <n> WordBusNumberTerm
741 %type <n> WordSpaceTerm
743 /* Local types that help construct the AML, not in ACPI spec */
745 %type <n> AmlPackageLengthTerm
746 %type <n> IncludeEndTerm
747 %type <n> NameStringItem
748 %type <n> TermArgItem
750 %type <n> OptionalAccessSize
751 %type <n> OptionalAddressingMode
752 %type <n> OptionalAddressRange
753 %type <n> OptionalBitsPerByte
754 %type <n> OptionalBuffer_Last
755 %type <n> OptionalByteConstExpr
756 %type <n> OptionalCount
757 %type <n> OptionalDecodeType
758 %type <n> OptionalDevicePolarity
759 %type <n> OptionalDWordConstExpr
760 %type <n> OptionalEndian
761 %type <n> OptionalFlowControl
762 %type <n> OptionalIoRestriction
763 %type <n> OptionalListString
764 %type <n> OptionalMaxType
765 %type <n> OptionalMemType
766 %type <n> OptionalMinType
767 %type <n> OptionalNameString
768 %type <n> OptionalNameString_First
769 %type <n> OptionalNameString_Last
770 %type <n> OptionalObjectTypeKeyword
771 %type <n> OptionalParameterTypePackage
772 %type <n> OptionalParameterTypesPackage
773 %type <n> OptionalParityType
774 %type <n> OptionalQWordConstExpr
775 %type <n> OptionalRangeType
776 %type <n> OptionalReference
777 %type <n> OptionalResourceType
778 %type <n> OptionalResourceType_First
779 %type <n> OptionalReturnArg
780 %type <n> OptionalSerializeRuleKeyword
781 %type <n> OptionalShareType
782 %type <n> OptionalShareType_First
783 %type <n> OptionalSlaveMode
784 %type <n> OptionalStopBits
785 %type <n> OptionalStringData
786 %type <n> OptionalTermArg
787 %type <n> OptionalTranslationType_Last
788 %type <n> OptionalType
789 %type <n> OptionalType_Last
790 %type <n> OptionalWireMode
791 %type <n> OptionalWordConst
792 %type <n> OptionalWordConstExpr
793 %type <n> OptionalXferSize
796 /*******************************************************************************
798 * Production rules start here
800 ******************************************************************************/
808 * Blocks, Data, and Opcodes
812 : DefinitionBlockTerm
813 | error {YYABORT; $$ = NULL;}
817 * Note concerning support for "module-level code".
819 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
820 * methods (the so-called module-level code.) This support was explicitly
821 * removed in ACPI 2.0, but this type of code continues to be created by
822 * BIOS vendors. In order to support the disassembly and recompilation of
823 * such code (and the porting of ASL code to iASL), iASL supports this
824 * code in violation of the current ACPI specification.
826 * The grammar change to support module-level code is to revert the
827 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
828 * original use of {TermList} instead (see below.) This allows the use
829 * of Type1 and Type2 opcodes at module level.
832 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
839 ')' {TrSetEndLineNumber ($<n>3);}
840 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
843 /* ACPI 3.0 -- allow semicolons between terms */
847 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
848 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
849 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
850 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
857 | Type2IntegerOpcode {}
858 | Type2StringOpcode {}
859 | Type2BufferOpcode {}
860 | Type2BufferOrStringOpcode {}
861 | error {$$ = AslDoError(); yyclearin;}
866 | IncludeCStyleTerm {$$ = NULL;}
867 | LineTerm {$$ = NULL;}
873 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
874 | error {$$ = AslDoError(); yyclearin;}
878 : CompilerDirective {}
880 | NameSpaceModifier {}
891 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
892 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
893 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
902 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
903 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
909 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
915 | CreateBitFieldTerm {}
916 | CreateByteFieldTerm {}
917 | CreateDWordFieldTerm {}
919 | CreateQWordFieldTerm {}
920 | CreateWordFieldTerm {}
942 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
943 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
949 | ArgList ',' /* Allows a trailing comma at list end */
951 TermArg {$$ = TrLinkPeerNode ($1,$3);}
955 Removed from TermArg due to reduce/reduce conflicts
956 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
957 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
958 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
959 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
964 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
965 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
966 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
967 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
968 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
972 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
973 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
974 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
978 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
987 /* Rules for specifying the type of one method argument or return value */
991 | ObjectTypeKeyword {$$ = $1;}
992 | ParameterTypePackage ','
993 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
996 ParameterTypePackageList
998 | ObjectTypeKeyword {$$ = $1;}
999 | '{' ParameterTypePackage '}' {$$ = $2;}
1002 OptionalParameterTypePackage
1003 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1004 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1007 /* Rules for specifying the types for method arguments */
1009 ParameterTypesPackage
1010 : ParameterTypePackageList {$$ = $1;}
1011 | ParameterTypesPackage ','
1012 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
1015 ParameterTypesPackageList
1017 | ObjectTypeKeyword {$$ = $1;}
1018 | '{' ParameterTypesPackage '}' {$$ = $2;}
1021 OptionalParameterTypesPackage
1022 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1023 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1064 * Type 3/4/5 opcodes
1067 Type2IntegerOpcode /* "Type3" opcodes */
1072 | FindSetLeftBitTerm {}
1073 | FindSetRightBitTerm {}
1080 | LGreaterEqualTerm {}
1102 Type2StringOpcode /* "Type4" Opcodes */
1103 : ToDecimalStringTerm {}
1104 | ToHexStringTerm {}
1108 Type2BufferOpcode /* "Type5" Opcodes */
1113 Type2BufferOrStringOpcode
1119 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1129 | ToDecimalStringTerm {}
1130 | ToHexStringTerm {}
1138 : ResourceTemplateTerm {}
1151 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1152 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1154 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1158 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1162 : PARSEOP_INCLUDE_CSTYLE
1163 String {FlOpenIncludeFile ($2);}
1167 : PARSEOP_LINE_CSTYLE
1168 Integer {FlSetLineNumber ($2);}
1172 : PARSEOP_EXTERNAL '('
1174 OptionalObjectTypeKeyword
1175 OptionalParameterTypePackage
1176 OptionalParameterTypesPackage
1177 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1178 | PARSEOP_EXTERNAL '('
1179 error ')' {$$ = AslDoError(); yyclearin;}
1183 /******* Named Objects *******************************************************/
1187 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1191 ',' AccessTypeKeyword
1193 ',' UpdateRuleKeyword
1195 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1196 | PARSEOP_BANKFIELD '('
1197 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1203 | FieldUnitList ',' /* Allows a trailing comma at list end */
1205 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1216 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1218 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1222 : PARSEOP_OFFSET '('
1223 AmlPackageLengthTerm
1224 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1225 | PARSEOP_OFFSET '('
1226 error ')' {$$ = AslDoError(); yyclearin;}
1230 : PARSEOP_ACCESSAS '('
1232 OptionalAccessAttribTerm
1233 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1234 | PARSEOP_ACCESSAS '('
1235 error ')' {$$ = AslDoError(); yyclearin;}
1239 : PARSEOP_CONNECTION '('
1241 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
1242 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
1244 ')' {$$ = TrLinkChildren ($<n>3, 1,
1245 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
1246 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1247 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1249 | PARSEOP_CONNECTION '('
1250 error ')' {$$ = AslDoError(); yyclearin;}
1254 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1258 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1259 | PARSEOP_CREATEBITFIELD '('
1260 error ')' {$$ = AslDoError(); yyclearin;}
1264 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1268 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1269 | PARSEOP_CREATEBYTEFIELD '('
1270 error ')' {$$ = AslDoError(); yyclearin;}
1273 CreateDWordFieldTerm
1274 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1278 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1279 | PARSEOP_CREATEDWORDFIELD '('
1280 error ')' {$$ = AslDoError(); yyclearin;}
1284 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1289 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1290 | PARSEOP_CREATEFIELD '('
1291 error ')' {$$ = AslDoError(); yyclearin;}
1294 CreateQWordFieldTerm
1295 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1299 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1300 | PARSEOP_CREATEQWORDFIELD '('
1301 error ')' {$$ = AslDoError(); yyclearin;}
1305 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1309 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1310 | PARSEOP_CREATEWORDFIELD '('
1311 error ')' {$$ = AslDoError(); yyclearin;}
1315 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1320 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1321 | PARSEOP_DATATABLEREGION '('
1322 error ')' {$$ = AslDoError(); yyclearin;}
1326 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1329 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1330 | PARSEOP_DEVICE '('
1331 error ')' {$$ = AslDoError(); yyclearin;}
1335 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
1337 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1339 error ')' {$$ = AslDoError(); yyclearin;}
1343 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
1345 ',' AccessTypeKeyword
1347 ',' UpdateRuleKeyword
1349 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1351 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1355 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1357 OptionalParameterTypePackage
1358 OptionalParameterTypesPackage
1360 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1361 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1362 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1363 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1364 | PARSEOP_FUNCTION '('
1365 error ')' {$$ = AslDoError(); yyclearin;}
1369 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1372 ',' AccessTypeKeyword
1374 ',' UpdateRuleKeyword
1376 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1377 | PARSEOP_INDEXFIELD '('
1378 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1382 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1384 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1385 OptionalSerializeRuleKeyword
1386 OptionalByteConstExpr
1387 OptionalParameterTypePackage
1388 OptionalParameterTypesPackage
1390 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1391 | PARSEOP_METHOD '('
1392 error ')' {$$ = AslDoError(); yyclearin;}
1396 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1399 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1401 error ')' {$$ = AslDoError(); yyclearin;}
1405 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1407 ',' OpRegionSpaceIdTerm
1410 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1411 | PARSEOP_OPERATIONREGION '('
1412 error ')' {$$ = AslDoError(); yyclearin;}
1416 : RegionSpaceKeyword {}
1417 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1421 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1426 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1427 | PARSEOP_POWERRESOURCE '('
1428 error ')' {$$ = AslDoError(); yyclearin;}
1432 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1435 OptionalDWordConstExpr
1436 OptionalByteConstExpr
1438 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1439 | PARSEOP_PROCESSOR '('
1440 error ')' {$$ = AslDoError(); yyclearin;}
1444 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1447 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1448 | PARSEOP_THERMALZONE '('
1449 error ')' {$$ = AslDoError(); yyclearin;}
1453 /******* Namespace modifiers *************************************************/
1457 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1460 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1462 error ')' {$$ = AslDoError(); yyclearin;}
1466 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1469 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1471 error ')' {$$ = AslDoError(); yyclearin;}
1475 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1478 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1480 error ')' {$$ = AslDoError(); yyclearin;}
1484 /******* Type 1 opcodes *******************************************************/
1488 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1492 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1496 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1500 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
1504 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1506 error ')' {$$ = AslDoError(); yyclearin;}
1510 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1514 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1517 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1520 error ')' {$$ = AslDoError(); yyclearin;}
1525 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1526 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1529 error '}' {$$ = AslDoError(); yyclearin;}
1532 error {$$ = AslDoError(); yyclearin;}
1534 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1535 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1537 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
1538 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
1539 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1541 | PARSEOP_ELSEIF '('
1542 error ')' {$$ = AslDoError(); yyclearin;}
1545 error {$$ = AslDoError(); yyclearin;}
1549 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1552 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1554 error ')' {$$ = AslDoError(); yyclearin;}
1558 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1562 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1565 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1566 | PARSEOP_NOTIFY '('
1567 error ')' {$$ = AslDoError(); yyclearin;}
1571 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1573 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1574 | PARSEOP_RELEASE '('
1575 error ')' {$$ = AslDoError(); yyclearin;}
1579 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1581 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1583 error ')' {$$ = AslDoError(); yyclearin;}
1587 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1589 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1590 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1591 | PARSEOP_RETURN '('
1592 error ')' {$$ = AslDoError(); yyclearin;}
1596 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1598 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1599 | PARSEOP_SIGNAL '('
1600 error ')' {$$ = AslDoError(); yyclearin;}
1604 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1606 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1608 error ')' {$$ = AslDoError(); yyclearin;}
1612 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1614 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1616 error ')' {$$ = AslDoError(); yyclearin;}
1620 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1623 CaseDefaultTermList '}'
1624 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1625 | PARSEOP_SWITCH '('
1626 error ')' {$$ = AslDoError(); yyclearin;}
1630 * Case-Default list; allow only one Default term and unlimited Case terms
1637 | CaseDefaultTermList
1638 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1639 | CaseDefaultTermList
1640 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1642 /* Original - attempts to force zero or one default term within the switch */
1649 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1651 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1658 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1663 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1666 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1668 error ')' {$$ = AslDoError(); yyclearin;}
1672 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1673 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1674 | PARSEOP_DEFAULT '{'
1675 error '}' {$$ = AslDoError(); yyclearin;}
1679 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1681 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1682 | PARSEOP_UNLOAD '('
1683 error ')' {$$ = AslDoError(); yyclearin;}
1687 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1689 ')' '{' TermList '}'
1690 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1692 error ')' {$$ = AslDoError(); yyclearin;}
1696 /******* Type 2 opcodes *******************************************************/
1699 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1702 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1703 | PARSEOP_ACQUIRE '('
1704 error ')' {$$ = AslDoError(); yyclearin;}
1708 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1712 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1714 error ')' {$$ = AslDoError(); yyclearin;}
1718 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1722 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1724 error ')' {$$ = AslDoError(); yyclearin;}
1728 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1732 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1733 | PARSEOP_CONCATENATE '('
1734 error ')' {$$ = AslDoError(); yyclearin;}
1738 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1742 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1743 | PARSEOP_CONCATENATERESTEMPLATE '('
1744 error ')' {$$ = AslDoError(); yyclearin;}
1748 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1751 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1752 | PARSEOP_CONDREFOF '('
1753 error ')' {$$ = AslDoError(); yyclearin;}
1757 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1760 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1761 | PARSEOP_COPYOBJECT '('
1762 error ')' {$$ = AslDoError(); yyclearin;}
1766 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1768 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1769 | PARSEOP_DECREMENT '('
1770 error ')' {$$ = AslDoError(); yyclearin;}
1774 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1776 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1777 | PARSEOP_DEREFOF '('
1778 error ')' {$$ = AslDoError(); yyclearin;}
1782 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1787 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1788 | PARSEOP_DIVIDE '('
1789 error ')' {$$ = AslDoError(); yyclearin;}
1793 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1796 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1797 | PARSEOP_FINDSETLEFTBIT '('
1798 error ')' {$$ = AslDoError(); yyclearin;}
1802 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1805 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1806 | PARSEOP_FINDSETRIGHTBIT '('
1807 error ')' {$$ = AslDoError(); yyclearin;}
1811 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1814 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1815 | PARSEOP_FROMBCD '('
1816 error ')' {$$ = AslDoError(); yyclearin;}
1820 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1822 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1823 | PARSEOP_INCREMENT '('
1824 error ')' {$$ = AslDoError(); yyclearin;}
1828 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1832 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1834 error ')' {$$ = AslDoError(); yyclearin;}
1838 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1841 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1843 error ')' {$$ = AslDoError(); yyclearin;}
1847 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1850 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1851 | PARSEOP_LEQUAL '('
1852 error ')' {$$ = AslDoError(); yyclearin;}
1856 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1859 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1860 | PARSEOP_LGREATER '('
1861 error ')' {$$ = AslDoError(); yyclearin;}
1865 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1868 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1869 | PARSEOP_LGREATEREQUAL '('
1870 error ')' {$$ = AslDoError(); yyclearin;}
1874 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1877 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1879 error ')' {$$ = AslDoError(); yyclearin;}
1883 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1886 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1887 | PARSEOP_LLESSEQUAL '('
1888 error ')' {$$ = AslDoError(); yyclearin;}
1892 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1894 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1896 error ')' {$$ = AslDoError(); yyclearin;}
1900 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1903 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1904 | PARSEOP_LNOTEQUAL '('
1905 error ')' {$$ = AslDoError(); yyclearin;}
1909 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1916 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1917 | PARSEOP_LOADTABLE '('
1918 error ')' {$$ = AslDoError(); yyclearin;}
1922 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1925 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1927 error ')' {$$ = AslDoError(); yyclearin;}
1931 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1938 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1940 error ')' {$$ = AslDoError(); yyclearin;}
1944 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1949 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1951 error ')' {$$ = AslDoError(); yyclearin;}
1955 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1959 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1961 error ')' {$$ = AslDoError(); yyclearin;}
1965 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1969 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1970 | PARSEOP_MULTIPLY '('
1971 error ')' {$$ = AslDoError(); yyclearin;}
1975 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1979 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1981 error ')' {$$ = AslDoError(); yyclearin;}
1985 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1989 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1991 error ')' {$$ = AslDoError(); yyclearin;}
1995 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1998 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2000 error ')' {$$ = AslDoError(); yyclearin;}
2004 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
2006 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2007 | PARSEOP_OBJECTTYPE '('
2008 error ')' {$$ = AslDoError(); yyclearin;}
2012 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
2016 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2018 error ')' {$$ = AslDoError(); yyclearin;}
2022 * In RefOf, the node isn't really a target, but we can't keep track of it after
2023 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
2026 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
2028 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
2030 error ')' {$$ = AslDoError(); yyclearin;}
2034 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
2038 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2039 | PARSEOP_SHIFTLEFT '('
2040 error ')' {$$ = AslDoError(); yyclearin;}
2044 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
2048 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2049 | PARSEOP_SHIFTRIGHT '('
2050 error ')' {$$ = AslDoError(); yyclearin;}
2054 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
2056 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2057 | PARSEOP_SIZEOF '('
2058 error ')' {$$ = AslDoError(); yyclearin;}
2062 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
2065 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2067 error ')' {$$ = AslDoError(); yyclearin;}
2071 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2075 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2076 | PARSEOP_SUBTRACT '('
2077 error ')' {$$ = AslDoError(); yyclearin;}
2081 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
2082 ')' {$$ = TrLinkChildren ($<n>3,0);}
2083 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2085 error ')' {$$ = AslDoError(); yyclearin;}
2089 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2092 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2094 error ')' {$$ = AslDoError(); yyclearin;}
2098 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2101 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2102 | PARSEOP_TOBUFFER '('
2103 error ')' {$$ = AslDoError(); yyclearin;}
2107 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2110 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2111 | PARSEOP_TODECIMALSTRING '('
2112 error ')' {$$ = AslDoError(); yyclearin;}
2116 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2119 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2120 | PARSEOP_TOHEXSTRING '('
2121 error ')' {$$ = AslDoError(); yyclearin;}
2125 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2128 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2129 | PARSEOP_TOINTEGER '('
2130 error ')' {$$ = AslDoError(); yyclearin;}
2134 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2138 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2139 | PARSEOP_TOSTRING '('
2140 error ')' {$$ = AslDoError(); yyclearin;}
2144 : PARSEOP_TOUUID '('
2145 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2146 | PARSEOP_TOUUID '('
2147 error ')' {$$ = AslDoError(); yyclearin;}
2151 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
2154 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2156 error ')' {$$ = AslDoError(); yyclearin;}
2160 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
2164 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2166 error ')' {$$ = AslDoError(); yyclearin;}
2170 /******* Keywords *************************************************************/
2174 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2175 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2176 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2177 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2178 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2179 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2180 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2181 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
2183 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2184 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
2186 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2187 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
2189 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2193 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2194 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2195 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2196 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2197 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2198 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2201 AddressingModeKeyword
2202 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
2203 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
2207 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2208 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2209 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2210 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2214 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2215 | RegionSpaceKeyword {}
2219 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
2220 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
2221 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
2222 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
2223 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
2227 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
2228 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
2231 ClockPolarityKeyword
2232 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
2233 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
2237 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2238 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2241 DevicePolarityKeyword
2242 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
2243 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
2247 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2248 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2249 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2250 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2254 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
2255 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
2259 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
2260 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
2261 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
2265 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
2266 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2267 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2270 InterruptTypeKeyword
2271 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2272 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2276 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2277 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2280 IoRestrictionKeyword
2281 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
2282 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
2283 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
2284 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
2288 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2289 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2293 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2294 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2295 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2296 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2297 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2298 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2302 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2303 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2307 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2308 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2309 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2310 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2314 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2315 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2319 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2320 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2321 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2322 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2323 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2324 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2325 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2326 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2327 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2328 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2329 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2330 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2331 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2332 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2333 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2334 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2338 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
2339 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
2340 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
2341 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
2342 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
2346 : PinConfigKeyword {$$ = $1;}
2347 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2351 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
2352 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
2353 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
2354 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
2358 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2359 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2360 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2364 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2365 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2366 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2367 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2368 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2369 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2370 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2371 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
2372 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
2373 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
2374 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
2378 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2379 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2382 SerializeRuleKeyword
2383 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2384 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2388 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2389 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2390 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
2391 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
2395 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
2396 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
2400 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
2401 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
2402 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
2403 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
2407 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2408 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2412 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2413 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2417 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2418 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2419 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2423 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
2424 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
2428 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
2429 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
2430 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2431 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
2432 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
2433 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
2437 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2438 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2439 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2443 /******* Miscellaneous Types **************************************************/
2452 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2456 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2457 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2458 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2459 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2460 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2461 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2462 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2466 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2467 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2468 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2469 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2470 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2471 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2472 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2473 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2477 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2482 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2486 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2490 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2494 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2498 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2502 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2507 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2511 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2512 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2513 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
2514 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
2515 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
2516 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
2517 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2521 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2522 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2523 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2528 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2529 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2530 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2535 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2536 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2537 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2542 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2543 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2544 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2548 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2551 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2552 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2553 | ',' TermArg {$$ = $2;}
2557 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2560 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2561 | PARSEOP_BUFFER '('
2562 error ')' {$$ = AslDoError(); yyclearin;}
2573 | ByteList ',' /* Allows a trailing comma at list end */
2575 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2579 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2582 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2583 | PARSEOP_DATABUFFER '('
2584 error ')' {$$ = AslDoError(); yyclearin;}
2590 | DWordList ',' /* Allows a trailing comma at list end */
2592 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2596 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2597 VarPackageLengthTerm
2599 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2600 | PARSEOP_PACKAGE '('
2601 error ')' {$$ = AslDoError(); yyclearin;}
2607 | PackageList ',' /* Allows a trailing comma at list end */
2609 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2617 VarPackageLengthTerm
2618 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2619 | TermArg {$$ = $1;}
2623 /******* Macros ***********************************************/
2627 : PARSEOP_EISAID '('
2628 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2629 | PARSEOP_EISAID '('
2630 error ')' {$$ = AslDoError(); yyclearin;}
2634 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2636 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2637 | PARSEOP_UNICODE '('
2638 error ')' {$$ = AslDoError(); yyclearin;}
2642 /******* Resources and Memory ***********************************************/
2646 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2647 * Also, insert the EndTag at the end of the template.
2649 ResourceTemplateTerm
2650 : PARSEOP_RESOURCETEMPLATE '(' ')'
2652 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2653 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2654 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2656 TrCreateLeafNode (PARSEOP_ENDTAG));}
2662 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2668 | DWordMemoryTerm {}
2670 | EndDependentFnTerm {}
2672 | ExtendedMemoryTerm {}
2673 | ExtendedSpaceTerm {}
2678 | I2cSerialBusTerm {}
2684 | Memory32FixedTerm {}
2687 | QWordMemoryTerm {}
2690 | SpiSerialBusTerm {}
2691 | StartDependentFnNoPriTerm {}
2692 | StartDependentFnTerm {}
2693 | UartSerialBusTerm {}
2695 | VendorShortTerm {}
2696 | WordBusNumberTerm {}
2702 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2704 OptionalBusMasterKeyword
2706 OptionalNameString_Last
2708 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2710 error ')' {$$ = AslDoError(); yyclearin;}
2714 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2715 OptionalResourceType_First
2725 OptionalByteConstExpr
2729 OptionalTranslationType_Last
2730 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2731 | PARSEOP_DWORDIO '('
2732 error ')' {$$ = AslDoError(); yyclearin;}
2736 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2737 OptionalResourceType_First
2742 ',' OptionalReadWriteKeyword
2748 OptionalByteConstExpr
2751 OptionalAddressRange
2753 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2754 | PARSEOP_DWORDMEMORY '('
2755 error ')' {$$ = AslDoError(); yyclearin;}
2759 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2760 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2761 OptionalResourceType
2771 OptionalByteConstExpr
2773 OptionalNameString_Last
2774 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2775 | PARSEOP_DWORDSPACE '('
2776 error ')' {$$ = AslDoError(); yyclearin;}
2781 : PARSEOP_ENDDEPENDENTFN '('
2782 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2783 | PARSEOP_ENDDEPENDENTFN '('
2784 error ')' {$$ = AslDoError(); yyclearin;}
2788 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2789 OptionalResourceType_First
2799 OptionalQWordConstExpr
2802 OptionalTranslationType_Last
2803 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2804 | PARSEOP_EXTENDEDIO '('
2805 error ')' {$$ = AslDoError(); yyclearin;}
2809 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2810 OptionalResourceType_First
2815 ',' OptionalReadWriteKeyword
2821 OptionalQWordConstExpr
2823 OptionalAddressRange
2825 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2826 | PARSEOP_EXTENDEDMEMORY '('
2827 error ')' {$$ = AslDoError(); yyclearin;}
2831 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2832 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2833 OptionalResourceType
2843 OptionalQWordConstExpr
2844 OptionalNameString_Last
2845 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2846 | PARSEOP_EXTENDEDSPACE '('
2847 error ')' {$$ = AslDoError(); yyclearin;}
2851 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2852 WordConstExpr // 04: DMA RequestLines
2853 ',' WordConstExpr // 06: DMA Channels
2854 OptionalXferSize // 07: DMA TransferSize
2855 OptionalNameString // 08: DescriptorName
2856 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2857 | PARSEOP_FIXEDDMA '('
2858 error ')' {$$ = AslDoError(); yyclearin;}
2862 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2865 OptionalNameString_Last
2866 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2867 | PARSEOP_FIXEDIO '('
2868 error ')' {$$ = AslDoError(); yyclearin;}
2872 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2873 InterruptTypeKeyword // 04: InterruptType
2874 ',' InterruptLevel // 06: InterruptLevel
2875 OptionalShareType // 07: SharedType
2876 ',' PinConfigByte // 09: PinConfig
2877 OptionalWordConstExpr // 10: DebounceTimeout
2878 ',' StringData // 12: ResourceSource
2879 OptionalByteConstExpr // 13: ResourceSourceIndex
2880 OptionalResourceType // 14: ResourceType
2881 OptionalNameString // 15: DescriptorName
2882 OptionalBuffer_Last // 16: VendorData
2884 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2885 | PARSEOP_GPIO_INT '('
2886 error ')' {$$ = AslDoError(); yyclearin;}
2890 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2891 OptionalShareType_First // 04: SharedType
2892 ',' PinConfigByte // 06: PinConfig
2893 OptionalWordConstExpr // 07: DebounceTimeout
2894 OptionalWordConstExpr // 08: DriveStrength
2895 OptionalIoRestriction // 09: IoRestriction
2896 ',' StringData // 11: ResourceSource
2897 OptionalByteConstExpr // 12: ResourceSourceIndex
2898 OptionalResourceType // 13: ResourceType
2899 OptionalNameString // 14: DescriptorName
2900 OptionalBuffer_Last // 15: VendorData
2902 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2903 | PARSEOP_GPIO_IO '('
2904 error ')' {$$ = AslDoError(); yyclearin;}
2908 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2909 WordConstExpr // 04: SlaveAddress
2910 OptionalSlaveMode // 05: SlaveMode
2911 ',' DWordConstExpr // 07: ConnectionSpeed
2912 OptionalAddressingMode // 08: AddressingMode
2913 ',' StringData // 10: ResourceSource
2914 OptionalByteConstExpr // 11: ResourceSourceIndex
2915 OptionalResourceType // 12: ResourceType
2916 OptionalNameString // 13: DescriptorName
2917 OptionalBuffer_Last // 14: VendorData
2918 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2919 | PARSEOP_I2C_SERIALBUS '('
2920 error ')' {$$ = AslDoError(); yyclearin;}
2924 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2925 OptionalResourceType_First
2926 ',' InterruptTypeKeyword
2929 OptionalByteConstExpr
2931 OptionalNameString_Last
2933 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2934 | PARSEOP_INTERRUPT '('
2935 error ')' {$$ = AslDoError(); yyclearin;}
2939 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2945 OptionalNameString_Last
2946 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2948 error ')' {$$ = AslDoError(); yyclearin;}
2952 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2953 OptionalNameString_First
2955 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2956 | PARSEOP_IRQNOFLAGS '('
2957 error ')' {$$ = AslDoError(); yyclearin;}
2961 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2962 InterruptTypeKeyword
2965 OptionalNameString_Last
2967 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2969 error ')' {$$ = AslDoError(); yyclearin;}
2973 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2974 OptionalReadWriteKeyword
2979 OptionalNameString_Last
2980 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2981 | PARSEOP_MEMORY24 '('
2982 error ')' {$$ = AslDoError(); yyclearin;}
2986 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2987 OptionalReadWriteKeyword
2990 OptionalNameString_Last
2991 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2992 | PARSEOP_MEMORY32FIXED '('
2993 error ')' {$$ = AslDoError(); yyclearin;}
2997 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2998 OptionalReadWriteKeyword
3003 OptionalNameString_Last
3004 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
3005 | PARSEOP_MEMORY32 '('
3006 error ')' {$$ = AslDoError(); yyclearin;}
3010 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
3011 OptionalResourceType_First
3021 OptionalByteConstExpr
3025 OptionalTranslationType_Last
3026 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3027 | PARSEOP_QWORDIO '('
3028 error ')' {$$ = AslDoError(); yyclearin;}
3032 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
3033 OptionalResourceType_First
3038 ',' OptionalReadWriteKeyword
3044 OptionalByteConstExpr
3047 OptionalAddressRange
3049 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
3050 | PARSEOP_QWORDMEMORY '('
3051 error ')' {$$ = AslDoError(); yyclearin;}
3055 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
3056 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3057 OptionalResourceType
3067 OptionalByteConstExpr
3069 OptionalNameString_Last
3070 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3071 | PARSEOP_QWORDSPACE '('
3072 error ')' {$$ = AslDoError(); yyclearin;}
3076 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
3082 OptionalNameString_Last
3083 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
3084 | PARSEOP_REGISTER '('
3085 error ')' {$$ = AslDoError(); yyclearin;}
3089 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
3090 WordConstExpr // 04: DeviceSelection
3091 OptionalDevicePolarity // 05: DevicePolarity
3092 OptionalWireMode // 06: WireMode
3093 ',' ByteConstExpr // 08: DataBitLength
3094 OptionalSlaveMode // 09: SlaveMode
3095 ',' DWordConstExpr // 11: ConnectionSpeed
3096 ',' ClockPolarityKeyword // 13: ClockPolarity
3097 ',' ClockPhaseKeyword // 15: ClockPhase
3098 ',' StringData // 17: ResourceSource
3099 OptionalByteConstExpr // 18: ResourceSourceIndex
3100 OptionalResourceType // 19: ResourceType
3101 OptionalNameString // 20: DescriptorName
3102 OptionalBuffer_Last // 21: VendorData
3103 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
3104 | PARSEOP_SPI_SERIALBUS '('
3105 error ')' {$$ = AslDoError(); yyclearin;}
3108 StartDependentFnNoPriTerm
3109 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
3111 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
3112 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
3113 error ')' {$$ = AslDoError(); yyclearin;}
3116 StartDependentFnTerm
3117 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
3121 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
3122 | PARSEOP_STARTDEPENDENTFN '('
3123 error ')' {$$ = AslDoError(); yyclearin;}
3127 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
3128 DWordConstExpr // 04: ConnectionSpeed
3129 OptionalBitsPerByte // 05: BitsPerByte
3130 OptionalStopBits // 06: StopBits
3131 ',' ByteConstExpr // 08: LinesInUse
3132 OptionalEndian // 09: Endianess
3133 OptionalParityType // 10: Parity
3134 OptionalFlowControl // 11: FlowControl
3135 ',' WordConstExpr // 13: Rx BufferSize
3136 ',' WordConstExpr // 15: Tx BufferSize
3137 ',' StringData // 17: ResourceSource
3138 OptionalByteConstExpr // 18: ResourceSourceIndex
3139 OptionalResourceType // 19: ResourceType
3140 OptionalNameString // 20: DescriptorName
3141 OptionalBuffer_Last // 21: VendorData
3142 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
3143 | PARSEOP_UART_SERIALBUS '('
3144 error ')' {$$ = AslDoError(); yyclearin;}
3148 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
3149 OptionalNameString_First
3151 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3152 | PARSEOP_VENDORLONG '('
3153 error ')' {$$ = AslDoError(); yyclearin;}
3157 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
3158 OptionalNameString_First
3160 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3161 | PARSEOP_VENDORSHORT '('
3162 error ')' {$$ = AslDoError(); yyclearin;}
3166 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
3167 OptionalResourceType_First
3176 OptionalByteConstExpr
3178 OptionalNameString_Last
3179 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
3180 | PARSEOP_WORDBUSNUMBER '('
3181 error ')' {$$ = AslDoError(); yyclearin;}
3185 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
3186 OptionalResourceType_First
3196 OptionalByteConstExpr
3200 OptionalTranslationType_Last
3201 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3202 | PARSEOP_WORDIO '('
3203 error ')' {$$ = AslDoError(); yyclearin;}
3207 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
3208 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3209 OptionalResourceType
3219 OptionalByteConstExpr
3221 OptionalNameString_Last
3222 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3223 | PARSEOP_WORDSPACE '('
3224 error ')' {$$ = AslDoError(); yyclearin;}
3228 /******* Object References ***********************************************/
3230 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
3234 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3235 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
3236 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
3237 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
3241 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3245 /******* Helper rules ****************************************************/
3248 AmlPackageLengthTerm
3249 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
3253 : ',' NameString {$$ = $2;}
3254 | ',' error {$$ = AslDoError (); yyclearin;}
3258 : ',' TermArg {$$ = $2;}
3259 | ',' error {$$ = AslDoError (); yyclearin;}
3262 OptionalBusMasterKeyword
3263 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3264 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3265 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
3268 OptionalAccessAttribTerm
3271 | ',' ByteConstExpr {$$ = $2;}
3272 | ',' AccessAttribKeyword {$$ = $2;}
3276 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3277 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3278 | ',' ByteConstExpr {$$ = $2;}
3281 OptionalAddressingMode
3283 | ',' AddressingModeKeyword {$$ = $2;}
3286 OptionalAddressRange
3289 | ',' AddressKeyword {$$ = $2;}
3294 | ',' BitsPerByteKeyword {$$ = $2;}
3300 | ',' DataBufferTerm {$$ = $2;}
3303 OptionalByteConstExpr
3306 | ',' ByteConstExpr {$$ = $2;}
3311 | ',' DecodeKeyword {$$ = $2;}
3314 OptionalDevicePolarity
3316 | ',' DevicePolarityKeyword {$$ = $2;}
3319 OptionalDWordConstExpr
3322 | ',' DWordConstExpr {$$ = $2;}
3327 | ',' EndianKeyword {$$ = $2;}
3332 | ',' FlowControlKeyword {$$ = $2;}
3335 OptionalIoRestriction
3337 | ',' IoRestrictionKeyword {$$ = $2;}
3341 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3342 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3343 | ',' TermArg {$$ = $2;}
3348 | ',' MaxKeyword {$$ = $2;}
3353 | ',' MemTypeKeyword {$$ = $2;}
3358 | ',' MinKeyword {$$ = $2;}
3364 | ',' NameString {$$ = $2;}
3367 OptionalNameString_Last
3370 | ',' NameString {$$ = $2;}
3373 OptionalNameString_First
3374 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3375 | NameString {$$ = $1;}
3378 OptionalObjectTypeKeyword
3379 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3380 | ',' ObjectTypeKeyword {$$ = $2;}
3385 | ',' ParityTypeKeyword {$$ = $2;}
3388 OptionalQWordConstExpr
3391 | ',' QWordConstExpr {$$ = $2;}
3396 | ',' RangeTypeKeyword {$$ = $2;}
3399 OptionalReadWriteKeyword
3400 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3401 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3402 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
3406 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3407 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3408 | ',' TermArg {$$ = $2;}
3411 OptionalResourceType_First
3412 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3413 | ResourceTypeKeyword {$$ = $1;}
3416 OptionalResourceType
3417 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3418 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3419 | ',' ResourceTypeKeyword {$$ = $2;}
3423 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
3424 | TermArg {$$ = $1;}
3427 OptionalSerializeRuleKeyword
3430 | ',' SerializeRuleKeyword {$$ = $2;}
3435 | ',' SlaveModeKeyword {$$ = $2;}
3441 | ',' ShareTypeKeyword {$$ = $2;}
3444 OptionalShareType_First
3446 | ShareTypeKeyword {$$ = $1;}
3451 | ',' StopBitsKeyword {$$ = $2;}
3457 | ',' StringData {$$ = $2;}
3462 | TermArg {$$ = $1;}
3468 | ',' TypeKeyword {$$ = $2;}
3474 | ',' TypeKeyword {$$ = $2;}
3477 OptionalTranslationType_Last
3480 | ',' TranslationKeyword {$$ = $2;}
3485 | ',' WireModeKeyword {$$ = $2;}
3490 | WordConst {$$ = $1;}
3493 OptionalWordConstExpr
3495 | ',' WordConstExpr {$$ = $2;}
3499 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3500 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3501 | ',' XferSizeKeyword {$$ = $2;}
3505 /******************************************************************************
3507 * Local support functions
3509 *****************************************************************************/
3512 AslCompilerwrap(void)
3517 /*! [End] no source code translation !*/
3520 AslLocalAllocate (unsigned int Size)
3525 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
3527 Mem = ACPI_ALLOCATE_ZEROED (Size);
3530 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3531 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3532 Gbl_InputByteCount, Gbl_CurrentColumn,
3533 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3545 return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3550 /*******************************************************************************
3552 * FUNCTION: UtGetOpName
3554 * PARAMETERS: ParseOpcode - Parser keyword ID
3556 * RETURN: Pointer to the opcode name
3558 * DESCRIPTION: Get the ascii name of the parse opcode
3560 ******************************************************************************/
3566 #ifdef ASL_YYTNAME_START
3568 * First entries (ASL_YYTNAME_START) in yytname are special reserved names.
3569 * Ignore first 8 characters of the name
3571 return ((char *) yytname
3572 [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8);
3574 return ("[Unknown parser generator]");