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_END
240 %token <i> PARSEOP_INCREMENT
241 %token <i> PARSEOP_INDEX
242 %token <i> PARSEOP_INDEXFIELD
243 %token <i> PARSEOP_INTEGER
244 %token <i> PARSEOP_INTERRUPT
245 %token <i> PARSEOP_INTLEVEL_ACTIVEBOTH
246 %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
247 %token <i> PARSEOP_INTLEVEL_ACTIVELOW
248 %token <i> PARSEOP_INTTYPE_EDGE
249 %token <i> PARSEOP_INTTYPE_LEVEL
250 %token <i> PARSEOP_IO
251 %token <i> PARSEOP_IODECODETYPE_10
252 %token <i> PARSEOP_IODECODETYPE_16
253 %token <i> PARSEOP_IORESTRICT_IN
254 %token <i> PARSEOP_IORESTRICT_NONE
255 %token <i> PARSEOP_IORESTRICT_OUT
256 %token <i> PARSEOP_IORESTRICT_PRESERVE
257 %token <i> PARSEOP_IRQ
258 %token <i> PARSEOP_IRQNOFLAGS
259 %token <i> PARSEOP_LAND
260 %token <i> PARSEOP_LEQUAL
261 %token <i> PARSEOP_LGREATER
262 %token <i> PARSEOP_LGREATEREQUAL
263 %token <i> PARSEOP_LLESS
264 %token <i> PARSEOP_LLESSEQUAL
265 %token <i> PARSEOP_LNOT
266 %token <i> PARSEOP_LNOTEQUAL
267 %token <i> PARSEOP_LOAD
268 %token <i> PARSEOP_LOADTABLE
269 %token <i> PARSEOP_LOCAL0
270 %token <i> PARSEOP_LOCAL1
271 %token <i> PARSEOP_LOCAL2
272 %token <i> PARSEOP_LOCAL3
273 %token <i> PARSEOP_LOCAL4
274 %token <i> PARSEOP_LOCAL5
275 %token <i> PARSEOP_LOCAL6
276 %token <i> PARSEOP_LOCAL7
277 %token <i> PARSEOP_LOCKRULE_LOCK
278 %token <i> PARSEOP_LOCKRULE_NOLOCK
279 %token <i> PARSEOP_LOR
280 %token <i> PARSEOP_MATCH
281 %token <i> PARSEOP_MATCHTYPE_MEQ
282 %token <i> PARSEOP_MATCHTYPE_MGE
283 %token <i> PARSEOP_MATCHTYPE_MGT
284 %token <i> PARSEOP_MATCHTYPE_MLE
285 %token <i> PARSEOP_MATCHTYPE_MLT
286 %token <i> PARSEOP_MATCHTYPE_MTR
287 %token <i> PARSEOP_MAXTYPE_FIXED
288 %token <i> PARSEOP_MAXTYPE_NOTFIXED
289 %token <i> PARSEOP_MEMORY24
290 %token <i> PARSEOP_MEMORY32
291 %token <i> PARSEOP_MEMORY32FIXED
292 %token <i> PARSEOP_MEMTYPE_CACHEABLE
293 %token <i> PARSEOP_MEMTYPE_NONCACHEABLE
294 %token <i> PARSEOP_MEMTYPE_PREFETCHABLE
295 %token <i> PARSEOP_MEMTYPE_WRITECOMBINING
296 %token <i> PARSEOP_METHOD
297 %token <i> PARSEOP_METHODCALL
298 %token <i> PARSEOP_MID
299 %token <i> PARSEOP_MINTYPE_FIXED
300 %token <i> PARSEOP_MINTYPE_NOTFIXED
301 %token <i> PARSEOP_MOD
302 %token <i> PARSEOP_MULTIPLY
303 %token <i> PARSEOP_MUTEX
304 %token <i> PARSEOP_NAME
305 %token <s> PARSEOP_NAMESEG
306 %token <s> PARSEOP_NAMESTRING
307 %token <i> PARSEOP_NAND
308 %token <i> PARSEOP_NOOP
309 %token <i> PARSEOP_NOR
310 %token <i> PARSEOP_NOT
311 %token <i> PARSEOP_NOTIFY
312 %token <i> PARSEOP_OBJECTTYPE
313 %token <i> PARSEOP_OBJECTTYPE_BFF
314 %token <i> PARSEOP_OBJECTTYPE_BUF
315 %token <i> PARSEOP_OBJECTTYPE_DDB
316 %token <i> PARSEOP_OBJECTTYPE_DEV
317 %token <i> PARSEOP_OBJECTTYPE_EVT
318 %token <i> PARSEOP_OBJECTTYPE_FLD
319 %token <i> PARSEOP_OBJECTTYPE_INT
320 %token <i> PARSEOP_OBJECTTYPE_MTH
321 %token <i> PARSEOP_OBJECTTYPE_MTX
322 %token <i> PARSEOP_OBJECTTYPE_OPR
323 %token <i> PARSEOP_OBJECTTYPE_PKG
324 %token <i> PARSEOP_OBJECTTYPE_POW
325 %token <i> PARSEOP_OBJECTTYPE_PRO
326 %token <i> PARSEOP_OBJECTTYPE_STR
327 %token <i> PARSEOP_OBJECTTYPE_THZ
328 %token <i> PARSEOP_OBJECTTYPE_UNK
329 %token <i> PARSEOP_OFFSET
330 %token <i> PARSEOP_ONE
331 %token <i> PARSEOP_ONES
332 %token <i> PARSEOP_OPERATIONREGION
333 %token <i> PARSEOP_OR
334 %token <i> PARSEOP_PACKAGE
335 %token <i> PARSEOP_PACKAGE_LENGTH
336 %token <i> PARSEOP_PARITYTYPE_EVEN
337 %token <i> PARSEOP_PARITYTYPE_MARK
338 %token <i> PARSEOP_PARITYTYPE_NONE
339 %token <i> PARSEOP_PARITYTYPE_ODD
340 %token <i> PARSEOP_PARITYTYPE_SPACE
341 %token <i> PARSEOP_PIN_NOPULL
342 %token <i> PARSEOP_PIN_PULLDEFAULT
343 %token <i> PARSEOP_PIN_PULLDOWN
344 %token <i> PARSEOP_PIN_PULLUP
345 %token <i> PARSEOP_POWERRESOURCE
346 %token <i> PARSEOP_PROCESSOR
347 %token <i> PARSEOP_QWORDCONST
348 %token <i> PARSEOP_QWORDIO
349 %token <i> PARSEOP_QWORDMEMORY
350 %token <i> PARSEOP_QWORDSPACE
351 %token <i> PARSEOP_RANGETYPE_ENTIRE
352 %token <i> PARSEOP_RANGETYPE_ISAONLY
353 %token <i> PARSEOP_RANGETYPE_NONISAONLY
354 %token <i> PARSEOP_RAW_DATA
355 %token <i> PARSEOP_READWRITETYPE_BOTH
356 %token <i> PARSEOP_READWRITETYPE_READONLY
357 %token <i> PARSEOP_REFOF
358 %token <i> PARSEOP_REGIONSPACE_CMOS
359 %token <i> PARSEOP_REGIONSPACE_EC
360 %token <i> PARSEOP_REGIONSPACE_FFIXEDHW
361 %token <i> PARSEOP_REGIONSPACE_GPIO
362 %token <i> PARSEOP_REGIONSPACE_GSBUS
363 %token <i> PARSEOP_REGIONSPACE_IO
364 %token <i> PARSEOP_REGIONSPACE_IPMI
365 %token <i> PARSEOP_REGIONSPACE_MEM
366 %token <i> PARSEOP_REGIONSPACE_PCC
367 %token <i> PARSEOP_REGIONSPACE_PCI
368 %token <i> PARSEOP_REGIONSPACE_PCIBAR
369 %token <i> PARSEOP_REGIONSPACE_SMBUS
370 %token <i> PARSEOP_REGISTER
371 %token <i> PARSEOP_RELEASE
372 %token <i> PARSEOP_RESERVED_BYTES
373 %token <i> PARSEOP_RESET
374 %token <i> PARSEOP_RESOURCETEMPLATE
375 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
376 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
377 %token <i> PARSEOP_RETURN
378 %token <i> PARSEOP_REVISION
379 %token <i> PARSEOP_SCOPE
380 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
381 %token <i> PARSEOP_SERIALIZERULE_SERIAL
382 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
383 %token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
384 %token <i> PARSEOP_SHARETYPE_SHARED
385 %token <i> PARSEOP_SHARETYPE_SHAREDWAKE
386 %token <i> PARSEOP_SHIFTLEFT
387 %token <i> PARSEOP_SHIFTRIGHT
388 %token <i> PARSEOP_SIGNAL
389 %token <i> PARSEOP_SIZEOF
390 %token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
391 %token <i> PARSEOP_SLAVEMODE_DEVICEINIT
392 %token <i> PARSEOP_SLEEP
393 %token <i> PARSEOP_SPI_SERIALBUS
394 %token <i> PARSEOP_STALL
395 %token <i> PARSEOP_STARTDEPENDENTFN
396 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
397 %token <i> PARSEOP_STOPBITS_ONE
398 %token <i> PARSEOP_STOPBITS_ONEPLUSHALF
399 %token <i> PARSEOP_STOPBITS_TWO
400 %token <i> PARSEOP_STOPBITS_ZERO
401 %token <i> PARSEOP_STORE
402 %token <s> PARSEOP_STRING_LITERAL
403 %token <i> PARSEOP_SUBTRACT
404 %token <i> PARSEOP_SWITCH
405 %token <i> PARSEOP_THERMALZONE
406 %token <i> PARSEOP_TIMER
407 %token <i> PARSEOP_TOBCD
408 %token <i> PARSEOP_TOBUFFER
409 %token <i> PARSEOP_TODECIMALSTRING
410 %token <i> PARSEOP_TOHEXSTRING
411 %token <i> PARSEOP_TOINTEGER
412 %token <i> PARSEOP_TOSTRING
413 %token <i> PARSEOP_TOUUID
414 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
415 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
416 %token <i> PARSEOP_TYPE_STATIC
417 %token <i> PARSEOP_TYPE_TRANSLATION
418 %token <i> PARSEOP_UART_SERIALBUS
419 %token <i> PARSEOP_UNICODE
420 %token <i> PARSEOP_UNLOAD
421 %token <i> PARSEOP_UPDATERULE_ONES
422 %token <i> PARSEOP_UPDATERULE_PRESERVE
423 %token <i> PARSEOP_UPDATERULE_ZEROS
424 %token <i> PARSEOP_VAR_PACKAGE
425 %token <i> PARSEOP_VENDORLONG
426 %token <i> PARSEOP_VENDORSHORT
427 %token <i> PARSEOP_WAIT
428 %token <i> PARSEOP_WHILE
429 %token <i> PARSEOP_WIREMODE_FOUR
430 %token <i> PARSEOP_WIREMODE_THREE
431 %token <i> PARSEOP_WORDBUSNUMBER
432 %token <i> PARSEOP_WORDCONST
433 %token <i> PARSEOP_WORDIO
434 %token <i> PARSEOP_WORDSPACE
435 %token <i> PARSEOP_XFERSIZE_8
436 %token <i> PARSEOP_XFERSIZE_16
437 %token <i> PARSEOP_XFERSIZE_32
438 %token <i> PARSEOP_XFERSIZE_64
439 %token <i> PARSEOP_XFERSIZE_128
440 %token <i> PARSEOP_XFERSIZE_256
441 %token <i> PARSEOP_XFERTYPE_8
442 %token <i> PARSEOP_XFERTYPE_8_16
443 %token <i> PARSEOP_XFERTYPE_16
444 %token <i> PARSEOP_XOR
445 %token <i> PARSEOP_ZERO
448 * Special functions. These should probably stay at the end of this
451 %token <i> PARSEOP___DATE__
452 %token <i> PARSEOP___FILE__
453 %token <i> PARSEOP___LINE__
454 %token <i> PARSEOP___PATH__
457 /******************************************************************************
461 *****************************************************************************/
466 %type <n> BufferTermData
467 %type <n> CompilerDirective
469 %type <n> DefinitionBlockTerm
470 %type <n> IntegerData
471 %type <n> NamedObject
472 %type <n> NameSpaceModifier
475 %type <n> PackageData
476 %type <n> ParameterTypePackage
477 %type <n> ParameterTypePackageList
478 %type <n> ParameterTypesPackage
479 %type <n> ParameterTypesPackageList
480 %type <n> RequiredTarget
481 %type <n> SimpleTarget
489 /* Type4Opcode is obsolete */
491 %type <n> Type1Opcode
492 %type <n> Type2BufferOpcode
493 %type <n> Type2BufferOrStringOpcode
494 %type <n> Type2IntegerOpcode
495 %type <n> Type2Opcode
496 %type <n> Type2StringOpcode
497 %type <n> Type3Opcode
498 %type <n> Type5Opcode
499 %type <n> Type6Opcode
501 %type <n> AccessAsTerm
502 %type <n> ExternalTerm
504 %type <n> FieldUnitEntry
505 %type <n> FieldUnitList
506 %type <n> IncludeTerm
508 %type <n> OptionalAccessAttribTerm
512 %type <n> BankFieldTerm
513 %type <n> CreateBitFieldTerm
514 %type <n> CreateByteFieldTerm
515 %type <n> CreateDWordFieldTerm
516 %type <n> CreateFieldTerm
517 %type <n> CreateQWordFieldTerm
518 %type <n> CreateWordFieldTerm
519 %type <n> DataRegionTerm
523 %type <n> FunctionTerm
524 %type <n> IndexFieldTerm
527 %type <n> OpRegionTerm
528 %type <n> OpRegionSpaceIdTerm
529 %type <n> PowerResTerm
530 %type <n> ProcessorTerm
531 %type <n> ThermalZoneTerm
533 /* Namespace modifiers */
541 %type <n> BreakPointTerm
543 %type <n> CaseDefaultTermList
545 %type <n> ContinueTerm
546 %type <n> DefaultTerm
554 %type <n> ReleaseTerm
563 //%type <n> CaseTermList
567 %type <n> AcquireTerm
570 %type <n> ConcatResTerm
572 %type <n> CondRefOfTerm
573 %type <n> CopyObjectTerm
575 %type <n> DerefOfTerm
577 %type <n> FindSetLeftBitTerm
578 %type <n> FindSetRightBitTerm
579 %type <n> FromBCDTerm
584 %type <n> LGreaterEqualTerm
585 %type <n> LGreaterTerm
586 %type <n> LLessEqualTerm
588 %type <n> LNotEqualTerm
590 %type <n> LoadTableTerm
595 %type <n> MultiplyTerm
599 %type <n> ObjectTypeTerm
602 %type <n> ShiftLeftTerm
603 %type <n> ShiftRightTerm
606 %type <n> SubtractTerm
609 %type <n> ToBufferTerm
610 %type <n> ToDecimalStringTerm
611 %type <n> ToHexStringTerm
612 %type <n> ToIntegerTerm
613 %type <n> ToStringTerm
619 %type <n> AccessAttribKeyword
620 %type <n> AccessTypeKeyword
621 %type <n> AddressingModeKeyword
622 %type <n> AddressKeyword
623 %type <n> AddressSpaceKeyword
624 %type <n> BitsPerByteKeyword
625 %type <n> ClockPhaseKeyword
626 %type <n> ClockPolarityKeyword
627 %type <n> DecodeKeyword
628 %type <n> DevicePolarityKeyword
629 %type <n> DMATypeKeyword
630 %type <n> EndianKeyword
631 %type <n> FlowControlKeyword
632 %type <n> InterruptLevel
633 %type <n> InterruptTypeKeyword
634 %type <n> IODecodeKeyword
635 %type <n> IoRestrictionKeyword
636 %type <n> LockRuleKeyword
637 %type <n> MatchOpKeyword
639 %type <n> MemTypeKeyword
641 %type <n> ObjectTypeKeyword
642 %type <n> OptionalBusMasterKeyword
643 %type <n> OptionalReadWriteKeyword
644 %type <n> ParityTypeKeyword
645 %type <n> PinConfigByte
646 %type <n> PinConfigKeyword
647 %type <n> RangeTypeKeyword
648 %type <n> RegionSpaceKeyword
649 %type <n> ResourceTypeKeyword
650 %type <n> SerializeRuleKeyword
651 %type <n> ShareTypeKeyword
652 %type <n> SlaveModeKeyword
653 %type <n> StopBitsKeyword
654 %type <n> TranslationKeyword
655 %type <n> TypeKeyword
656 %type <n> UpdateRuleKeyword
657 %type <n> WireModeKeyword
658 %type <n> XferSizeKeyword
659 %type <n> XferTypeKeyword
676 %type <n> ConstExprTerm
677 %type <n> ByteConstExpr
678 %type <n> WordConstExpr
679 %type <n> DWordConstExpr
680 %type <n> QWordConstExpr
686 %type <n> PackageElement
687 %type <n> PackageList
688 %type <n> PackageTerm
689 %type <n> VarPackageLengthTerm
694 %type <n> ResourceMacroList
695 %type <n> ResourceMacroTerm
696 %type <n> ResourceTemplateTerm
698 %type <n> UnicodeTerm
700 /* Resource Descriptors */
702 %type <n> ConnectionTerm
703 %type <n> DataBufferTerm
705 %type <n> DWordIOTerm
706 %type <n> DWordMemoryTerm
707 %type <n> DWordSpaceTerm
708 %type <n> EndDependentFnTerm
709 %type <n> ExtendedIOTerm
710 %type <n> ExtendedMemoryTerm
711 %type <n> ExtendedSpaceTerm
712 %type <n> FixedDmaTerm
713 %type <n> FixedIOTerm
714 %type <n> GpioIntTerm
716 %type <n> I2cSerialBusTerm
717 %type <n> InterruptTerm
719 %type <n> IRQNoFlagsTerm
721 %type <n> Memory24Term
722 %type <n> Memory32FixedTerm
723 %type <n> Memory32Term
726 %type <n> QWordIOTerm
727 %type <n> QWordMemoryTerm
728 %type <n> QWordSpaceTerm
729 %type <n> RegisterTerm
730 %type <n> SpiSerialBusTerm
731 %type <n> StartDependentFnNoPriTerm
732 %type <n> StartDependentFnTerm
733 %type <n> UartSerialBusTerm
734 %type <n> VendorLongTerm
735 %type <n> VendorShortTerm
736 %type <n> WordBusNumberTerm
738 %type <n> WordSpaceTerm
740 /* Local types that help construct the AML, not in ACPI spec */
742 %type <n> AmlPackageLengthTerm
743 %type <n> IncludeEndTerm
744 %type <n> NameStringItem
745 %type <n> TermArgItem
747 %type <n> OptionalAccessSize
748 %type <n> OptionalAddressingMode
749 %type <n> OptionalAddressRange
750 %type <n> OptionalBitsPerByte
751 %type <n> OptionalBuffer_Last
752 %type <n> OptionalByteConstExpr
753 %type <n> OptionalCount
754 %type <n> OptionalDecodeType
755 %type <n> OptionalDevicePolarity
756 %type <n> OptionalDWordConstExpr
757 %type <n> OptionalEndian
758 %type <n> OptionalFlowControl
759 %type <n> OptionalIoRestriction
760 %type <n> OptionalListString
761 %type <n> OptionalMaxType
762 %type <n> OptionalMemType
763 %type <n> OptionalMinType
764 %type <n> OptionalNameString
765 %type <n> OptionalNameString_First
766 %type <n> OptionalNameString_Last
767 %type <n> OptionalObjectTypeKeyword
768 %type <n> OptionalParameterTypePackage
769 %type <n> OptionalParameterTypesPackage
770 %type <n> OptionalParityType
771 %type <n> OptionalQWordConstExpr
772 %type <n> OptionalRangeType
773 %type <n> OptionalReference
774 %type <n> OptionalResourceType
775 %type <n> OptionalResourceType_First
776 %type <n> OptionalReturnArg
777 %type <n> OptionalSerializeRuleKeyword
778 %type <n> OptionalShareType
779 %type <n> OptionalShareType_First
780 %type <n> OptionalSlaveMode
781 %type <n> OptionalStopBits
782 %type <n> OptionalStringData
783 %type <n> OptionalTermArg
784 %type <n> OptionalTranslationType_Last
785 %type <n> OptionalType
786 %type <n> OptionalType_Last
787 %type <n> OptionalWireMode
788 %type <n> OptionalWordConst
789 %type <n> OptionalWordConstExpr
790 %type <n> OptionalXferSize
793 /*******************************************************************************
795 * Production rules start here
797 ******************************************************************************/
805 * Root rule. Allow multiple #line directives before the definition block
806 * to handle output from preprocessors
809 : DefinitionBlockTerm
810 | error {YYABORT; $$ = NULL;}
814 * Blocks, Data, and Opcodes
818 * Note concerning support for "module-level code".
820 * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
821 * methods (the so-called module-level code.) This support was explicitly
822 * removed in ACPI 2.0, but this type of code continues to be created by
823 * BIOS vendors. In order to support the disassembly and recompilation of
824 * such code (and the porting of ASL code to iASL), iASL supports this
825 * code in violation of the current ACPI specification.
827 * The grammar change to support module-level code is to revert the
828 * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
829 * original use of {TermList} instead (see below.) This allows the use
830 * of Type1 and Type2 opcodes at module level.
833 : PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
840 ')' {TrSetEndLineNumber ($<n>3);}
841 '{' TermList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
844 /* ACPI 3.0 -- allow semicolons between terms */
848 | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
849 | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
850 | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
851 | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
858 | Type2IntegerOpcode {}
859 | Type2StringOpcode {}
860 | Type2BufferOpcode {}
861 | Type2BufferOrStringOpcode {}
862 | error {$$ = AslDoError(); yyclearin;}
872 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
873 | error {$$ = AslDoError(); yyclearin;}
877 : CompilerDirective {}
879 | NameSpaceModifier {}
890 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
891 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
892 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
901 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
902 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
908 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
914 | CreateBitFieldTerm {}
915 | CreateByteFieldTerm {}
916 | CreateDWordFieldTerm {}
918 | CreateQWordFieldTerm {}
919 | CreateWordFieldTerm {}
941 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
942 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
948 | ArgList ',' /* Allows a trailing comma at list end */
950 TermArg {$$ = TrLinkPeerNode ($1,$3);}
954 Removed from TermArg due to reduce/reduce conflicts
955 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
956 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
957 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
958 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
963 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
964 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
965 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
966 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
967 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
971 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
972 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
973 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
977 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
986 /* Rules for specifying the type of one method argument or return value */
990 | ObjectTypeKeyword {$$ = $1;}
991 | ParameterTypePackage ','
992 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
995 ParameterTypePackageList
997 | ObjectTypeKeyword {$$ = $1;}
998 | '{' ParameterTypePackage '}' {$$ = $2;}
1001 OptionalParameterTypePackage
1002 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1003 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1006 /* Rules for specifying the types for method arguments */
1008 ParameterTypesPackage
1009 : ParameterTypePackageList {$$ = $1;}
1010 | ParameterTypesPackage ','
1011 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
1014 ParameterTypesPackageList
1016 | ObjectTypeKeyword {$$ = $1;}
1017 | '{' ParameterTypesPackage '}' {$$ = $2;}
1020 OptionalParameterTypesPackage
1021 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1022 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1063 * Type 3/4/5 opcodes
1066 Type2IntegerOpcode /* "Type3" opcodes */
1071 | FindSetLeftBitTerm {}
1072 | FindSetRightBitTerm {}
1079 | LGreaterEqualTerm {}
1101 Type2StringOpcode /* "Type4" Opcodes */
1102 : ToDecimalStringTerm {}
1103 | ToHexStringTerm {}
1107 Type2BufferOpcode /* "Type5" Opcodes */
1112 Type2BufferOrStringOpcode
1118 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1128 | ToDecimalStringTerm {}
1129 | ToHexStringTerm {}
1137 : ResourceTemplateTerm {}
1150 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1151 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1153 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1157 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1161 : PARSEOP_EXTERNAL '('
1163 OptionalObjectTypeKeyword
1164 OptionalParameterTypePackage
1165 OptionalParameterTypesPackage
1166 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1167 | PARSEOP_EXTERNAL '('
1168 error ')' {$$ = AslDoError(); yyclearin;}
1172 /******* Named Objects *******************************************************/
1176 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1180 ',' AccessTypeKeyword
1182 ',' UpdateRuleKeyword
1184 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1185 | PARSEOP_BANKFIELD '('
1186 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1192 | FieldUnitList ',' /* Allows a trailing comma at list end */
1194 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1205 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1207 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1211 : PARSEOP_OFFSET '('
1212 AmlPackageLengthTerm
1213 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1214 | PARSEOP_OFFSET '('
1215 error ')' {$$ = AslDoError(); yyclearin;}
1219 : PARSEOP_ACCESSAS '('
1221 OptionalAccessAttribTerm
1222 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1223 | PARSEOP_ACCESSAS '('
1224 error ')' {$$ = AslDoError(); yyclearin;}
1228 : PARSEOP_CONNECTION '('
1230 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
1231 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
1233 ')' {$$ = TrLinkChildren ($<n>3, 1,
1234 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
1235 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1236 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1238 | PARSEOP_CONNECTION '('
1239 error ')' {$$ = AslDoError(); yyclearin;}
1243 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1247 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1248 | PARSEOP_CREATEBITFIELD '('
1249 error ')' {$$ = AslDoError(); yyclearin;}
1253 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1257 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1258 | PARSEOP_CREATEBYTEFIELD '('
1259 error ')' {$$ = AslDoError(); yyclearin;}
1262 CreateDWordFieldTerm
1263 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1267 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1268 | PARSEOP_CREATEDWORDFIELD '('
1269 error ')' {$$ = AslDoError(); yyclearin;}
1273 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1278 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1279 | PARSEOP_CREATEFIELD '('
1280 error ')' {$$ = AslDoError(); yyclearin;}
1283 CreateQWordFieldTerm
1284 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1288 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1289 | PARSEOP_CREATEQWORDFIELD '('
1290 error ')' {$$ = AslDoError(); yyclearin;}
1294 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1298 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1299 | PARSEOP_CREATEWORDFIELD '('
1300 error ')' {$$ = AslDoError(); yyclearin;}
1304 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1309 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1310 | PARSEOP_DATATABLEREGION '('
1311 error ')' {$$ = AslDoError(); yyclearin;}
1315 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1318 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1319 | PARSEOP_DEVICE '('
1320 error ')' {$$ = AslDoError(); yyclearin;}
1324 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
1326 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1328 error ')' {$$ = AslDoError(); yyclearin;}
1332 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
1334 ',' AccessTypeKeyword
1336 ',' UpdateRuleKeyword
1338 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1340 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1344 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1346 OptionalParameterTypePackage
1347 OptionalParameterTypesPackage
1349 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1350 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1351 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1352 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1353 | PARSEOP_FUNCTION '('
1354 error ')' {$$ = AslDoError(); yyclearin;}
1358 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1361 ',' AccessTypeKeyword
1363 ',' UpdateRuleKeyword
1365 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1366 | PARSEOP_INDEXFIELD '('
1367 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1371 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1373 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1374 OptionalSerializeRuleKeyword
1375 OptionalByteConstExpr
1376 OptionalParameterTypePackage
1377 OptionalParameterTypesPackage
1379 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1380 | PARSEOP_METHOD '('
1381 error ')' {$$ = AslDoError(); yyclearin;}
1385 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1388 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1390 error ')' {$$ = AslDoError(); yyclearin;}
1394 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1396 ',' OpRegionSpaceIdTerm
1399 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1400 | PARSEOP_OPERATIONREGION '('
1401 error ')' {$$ = AslDoError(); yyclearin;}
1405 : RegionSpaceKeyword {}
1406 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1410 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1415 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1416 | PARSEOP_POWERRESOURCE '('
1417 error ')' {$$ = AslDoError(); yyclearin;}
1421 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1424 OptionalDWordConstExpr
1425 OptionalByteConstExpr
1427 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1428 | PARSEOP_PROCESSOR '('
1429 error ')' {$$ = AslDoError(); yyclearin;}
1433 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1436 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1437 | PARSEOP_THERMALZONE '('
1438 error ')' {$$ = AslDoError(); yyclearin;}
1442 /******* Namespace modifiers *************************************************/
1446 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1449 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1451 error ')' {$$ = AslDoError(); yyclearin;}
1455 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1458 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1460 error ')' {$$ = AslDoError(); yyclearin;}
1464 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1467 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1469 error ')' {$$ = AslDoError(); yyclearin;}
1473 /******* Type 1 opcodes *******************************************************/
1477 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1481 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1485 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1489 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
1493 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1495 error ')' {$$ = AslDoError(); yyclearin;}
1499 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1503 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1506 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1509 error ')' {$$ = AslDoError(); yyclearin;}
1514 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1515 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1518 error '}' {$$ = AslDoError(); yyclearin;}
1521 error {$$ = AslDoError(); yyclearin;}
1523 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1524 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1526 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
1527 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
1528 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1530 | PARSEOP_ELSEIF '('
1531 error ')' {$$ = AslDoError(); yyclearin;}
1534 error {$$ = AslDoError(); yyclearin;}
1538 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1541 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1543 error ')' {$$ = AslDoError(); yyclearin;}
1547 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1551 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1554 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1555 | PARSEOP_NOTIFY '('
1556 error ')' {$$ = AslDoError(); yyclearin;}
1560 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1562 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1563 | PARSEOP_RELEASE '('
1564 error ')' {$$ = AslDoError(); yyclearin;}
1568 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1570 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1572 error ')' {$$ = AslDoError(); yyclearin;}
1576 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1578 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1579 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1580 | PARSEOP_RETURN '('
1581 error ')' {$$ = AslDoError(); yyclearin;}
1585 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1587 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1588 | PARSEOP_SIGNAL '('
1589 error ')' {$$ = AslDoError(); yyclearin;}
1593 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1595 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1597 error ')' {$$ = AslDoError(); yyclearin;}
1601 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1603 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1605 error ')' {$$ = AslDoError(); yyclearin;}
1609 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1612 CaseDefaultTermList '}'
1613 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1614 | PARSEOP_SWITCH '('
1615 error ')' {$$ = AslDoError(); yyclearin;}
1619 * Case-Default list; allow only one Default term and unlimited Case terms
1626 | CaseDefaultTermList
1627 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1628 | CaseDefaultTermList
1629 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1631 /* Original - attempts to force zero or one default term within the switch */
1638 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1640 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1647 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1652 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1655 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1657 error ')' {$$ = AslDoError(); yyclearin;}
1661 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1662 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1663 | PARSEOP_DEFAULT '{'
1664 error '}' {$$ = AslDoError(); yyclearin;}
1668 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1670 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1671 | PARSEOP_UNLOAD '('
1672 error ')' {$$ = AslDoError(); yyclearin;}
1676 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1678 ')' '{' TermList '}'
1679 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1681 error ')' {$$ = AslDoError(); yyclearin;}
1685 /******* Type 2 opcodes *******************************************************/
1688 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1691 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1692 | PARSEOP_ACQUIRE '('
1693 error ')' {$$ = AslDoError(); yyclearin;}
1697 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1701 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1703 error ')' {$$ = AslDoError(); yyclearin;}
1707 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1711 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1713 error ')' {$$ = AslDoError(); yyclearin;}
1717 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1721 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1722 | PARSEOP_CONCATENATE '('
1723 error ')' {$$ = AslDoError(); yyclearin;}
1727 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1731 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1732 | PARSEOP_CONCATENATERESTEMPLATE '('
1733 error ')' {$$ = AslDoError(); yyclearin;}
1737 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1740 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1741 | PARSEOP_CONDREFOF '('
1742 error ')' {$$ = AslDoError(); yyclearin;}
1746 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1749 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1750 | PARSEOP_COPYOBJECT '('
1751 error ')' {$$ = AslDoError(); yyclearin;}
1755 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1757 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1758 | PARSEOP_DECREMENT '('
1759 error ')' {$$ = AslDoError(); yyclearin;}
1763 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1765 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1766 | PARSEOP_DEREFOF '('
1767 error ')' {$$ = AslDoError(); yyclearin;}
1771 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1776 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1777 | PARSEOP_DIVIDE '('
1778 error ')' {$$ = AslDoError(); yyclearin;}
1782 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1785 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1786 | PARSEOP_FINDSETLEFTBIT '('
1787 error ')' {$$ = AslDoError(); yyclearin;}
1791 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1794 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1795 | PARSEOP_FINDSETRIGHTBIT '('
1796 error ')' {$$ = AslDoError(); yyclearin;}
1800 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1803 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1804 | PARSEOP_FROMBCD '('
1805 error ')' {$$ = AslDoError(); yyclearin;}
1809 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1811 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1812 | PARSEOP_INCREMENT '('
1813 error ')' {$$ = AslDoError(); yyclearin;}
1817 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1821 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1823 error ')' {$$ = AslDoError(); yyclearin;}
1827 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1830 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1832 error ')' {$$ = AslDoError(); yyclearin;}
1836 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1839 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1840 | PARSEOP_LEQUAL '('
1841 error ')' {$$ = AslDoError(); yyclearin;}
1845 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1848 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1849 | PARSEOP_LGREATER '('
1850 error ')' {$$ = AslDoError(); yyclearin;}
1854 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1857 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1858 | PARSEOP_LGREATEREQUAL '('
1859 error ')' {$$ = AslDoError(); yyclearin;}
1863 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1866 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1868 error ')' {$$ = AslDoError(); yyclearin;}
1872 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1875 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1876 | PARSEOP_LLESSEQUAL '('
1877 error ')' {$$ = AslDoError(); yyclearin;}
1881 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1883 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1885 error ')' {$$ = AslDoError(); yyclearin;}
1889 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1892 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1893 | PARSEOP_LNOTEQUAL '('
1894 error ')' {$$ = AslDoError(); yyclearin;}
1898 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1905 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1906 | PARSEOP_LOADTABLE '('
1907 error ')' {$$ = AslDoError(); yyclearin;}
1911 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1914 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1916 error ')' {$$ = AslDoError(); yyclearin;}
1920 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1927 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1929 error ')' {$$ = AslDoError(); yyclearin;}
1933 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1938 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1940 error ')' {$$ = AslDoError(); yyclearin;}
1944 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1948 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1950 error ')' {$$ = AslDoError(); yyclearin;}
1954 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1958 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1959 | PARSEOP_MULTIPLY '('
1960 error ')' {$$ = AslDoError(); yyclearin;}
1964 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1968 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1970 error ')' {$$ = AslDoError(); yyclearin;}
1974 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1978 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1980 error ')' {$$ = AslDoError(); yyclearin;}
1984 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1987 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1989 error ')' {$$ = AslDoError(); yyclearin;}
1993 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1995 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1996 | PARSEOP_OBJECTTYPE '('
1997 error ')' {$$ = AslDoError(); yyclearin;}
2001 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
2005 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2007 error ')' {$$ = AslDoError(); yyclearin;}
2011 * In RefOf, the node isn't really a target, but we can't keep track of it after
2012 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
2015 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
2017 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
2019 error ')' {$$ = AslDoError(); yyclearin;}
2023 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
2027 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2028 | PARSEOP_SHIFTLEFT '('
2029 error ')' {$$ = AslDoError(); yyclearin;}
2033 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
2037 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2038 | PARSEOP_SHIFTRIGHT '('
2039 error ')' {$$ = AslDoError(); yyclearin;}
2043 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
2045 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2046 | PARSEOP_SIZEOF '('
2047 error ')' {$$ = AslDoError(); yyclearin;}
2051 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
2054 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2056 error ')' {$$ = AslDoError(); yyclearin;}
2060 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2064 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2065 | PARSEOP_SUBTRACT '('
2066 error ')' {$$ = AslDoError(); yyclearin;}
2070 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
2071 ')' {$$ = TrLinkChildren ($<n>3,0);}
2072 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2074 error ')' {$$ = AslDoError(); yyclearin;}
2078 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2081 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2083 error ')' {$$ = AslDoError(); yyclearin;}
2087 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2090 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2091 | PARSEOP_TOBUFFER '('
2092 error ')' {$$ = AslDoError(); yyclearin;}
2096 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2099 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2100 | PARSEOP_TODECIMALSTRING '('
2101 error ')' {$$ = AslDoError(); yyclearin;}
2105 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2108 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2109 | PARSEOP_TOHEXSTRING '('
2110 error ')' {$$ = AslDoError(); yyclearin;}
2114 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2117 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2118 | PARSEOP_TOINTEGER '('
2119 error ')' {$$ = AslDoError(); yyclearin;}
2123 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2127 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2128 | PARSEOP_TOSTRING '('
2129 error ')' {$$ = AslDoError(); yyclearin;}
2133 : PARSEOP_TOUUID '('
2134 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2135 | PARSEOP_TOUUID '('
2136 error ')' {$$ = AslDoError(); yyclearin;}
2140 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
2143 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2145 error ')' {$$ = AslDoError(); yyclearin;}
2149 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
2153 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2155 error ')' {$$ = AslDoError(); yyclearin;}
2159 /******* Keywords *************************************************************/
2163 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2164 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2165 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2166 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2167 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2168 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2169 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2170 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
2172 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2173 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
2175 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2176 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
2178 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2182 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2183 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2184 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2185 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2186 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2187 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2190 AddressingModeKeyword
2191 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
2192 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
2196 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2197 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2198 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2199 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2203 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
2204 | RegionSpaceKeyword {}
2208 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
2209 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
2210 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
2211 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
2212 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
2216 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
2217 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
2220 ClockPolarityKeyword
2221 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
2222 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
2226 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2227 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2230 DevicePolarityKeyword
2231 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
2232 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
2236 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2237 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2238 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2239 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2243 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
2244 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
2248 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
2249 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
2250 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
2254 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
2255 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2256 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2259 InterruptTypeKeyword
2260 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2261 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2265 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2266 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2269 IoRestrictionKeyword
2270 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
2271 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
2272 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
2273 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
2277 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2278 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2282 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2283 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2284 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2285 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2286 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2287 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2291 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2292 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2296 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2297 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2298 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2299 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2303 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2304 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2308 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2309 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2310 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2311 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2312 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2313 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2314 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2315 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2316 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2317 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2318 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2319 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2320 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2321 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2322 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2323 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2327 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
2328 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
2329 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
2330 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
2331 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
2335 : PinConfigKeyword {$$ = $1;}
2336 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2340 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
2341 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
2342 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
2343 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
2347 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2348 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2349 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2353 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2354 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2355 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2356 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2357 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2358 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2359 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2360 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
2361 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
2362 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
2363 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
2364 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
2368 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2369 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2372 SerializeRuleKeyword
2373 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2374 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2378 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2379 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2380 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
2381 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
2385 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
2386 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
2390 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
2391 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
2392 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
2393 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
2397 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2398 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2402 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2403 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2407 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2408 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2409 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2413 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
2414 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
2418 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
2419 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
2420 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2421 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
2422 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
2423 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
2427 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2428 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2429 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2433 /******* Miscellaneous Types **************************************************/
2442 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2446 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2447 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2448 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2449 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2450 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2451 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2452 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2456 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2457 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2458 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2459 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2460 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2461 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2462 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2463 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2467 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2472 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2476 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2480 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2484 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2488 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2492 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2497 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2501 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2502 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2503 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
2504 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
2505 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
2506 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
2507 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2511 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2512 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2513 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2518 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2519 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2520 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2525 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2526 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2527 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2532 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2533 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2534 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2538 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2541 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2542 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2543 | ',' TermArg {$$ = $2;}
2547 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2550 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2551 | PARSEOP_BUFFER '('
2552 error ')' {$$ = AslDoError(); yyclearin;}
2563 | ByteList ',' /* Allows a trailing comma at list end */
2565 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2569 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2572 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2573 | PARSEOP_DATABUFFER '('
2574 error ')' {$$ = AslDoError(); yyclearin;}
2580 | DWordList ',' /* Allows a trailing comma at list end */
2582 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2586 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2587 VarPackageLengthTerm
2589 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2590 | PARSEOP_PACKAGE '('
2591 error ')' {$$ = AslDoError(); yyclearin;}
2597 | PackageList ',' /* Allows a trailing comma at list end */
2599 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2607 VarPackageLengthTerm
2608 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2609 | TermArg {$$ = $1;}
2613 /******* Macros ***********************************************/
2617 : PARSEOP_EISAID '('
2618 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2619 | PARSEOP_EISAID '('
2620 error ')' {$$ = AslDoError(); yyclearin;}
2624 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2626 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2627 | PARSEOP_UNICODE '('
2628 error ')' {$$ = AslDoError(); yyclearin;}
2632 /******* Resources and Memory ***********************************************/
2636 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2637 * Also, insert the EndTag at the end of the template.
2639 ResourceTemplateTerm
2640 : PARSEOP_RESOURCETEMPLATE '(' ')'
2642 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2643 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2644 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2646 TrCreateLeafNode (PARSEOP_ENDTAG));}
2652 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2658 | DWordMemoryTerm {}
2660 | EndDependentFnTerm {}
2662 | ExtendedMemoryTerm {}
2663 | ExtendedSpaceTerm {}
2668 | I2cSerialBusTerm {}
2674 | Memory32FixedTerm {}
2677 | QWordMemoryTerm {}
2680 | SpiSerialBusTerm {}
2681 | StartDependentFnNoPriTerm {}
2682 | StartDependentFnTerm {}
2683 | UartSerialBusTerm {}
2685 | VendorShortTerm {}
2686 | WordBusNumberTerm {}
2692 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2694 OptionalBusMasterKeyword
2696 OptionalNameString_Last
2698 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2700 error ')' {$$ = AslDoError(); yyclearin;}
2704 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2705 OptionalResourceType_First
2715 OptionalByteConstExpr
2719 OptionalTranslationType_Last
2720 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2721 | PARSEOP_DWORDIO '('
2722 error ')' {$$ = AslDoError(); yyclearin;}
2726 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2727 OptionalResourceType_First
2732 ',' OptionalReadWriteKeyword
2738 OptionalByteConstExpr
2741 OptionalAddressRange
2743 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2744 | PARSEOP_DWORDMEMORY '('
2745 error ')' {$$ = AslDoError(); yyclearin;}
2749 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2750 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2751 OptionalResourceType
2761 OptionalByteConstExpr
2763 OptionalNameString_Last
2764 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2765 | PARSEOP_DWORDSPACE '('
2766 error ')' {$$ = AslDoError(); yyclearin;}
2771 : PARSEOP_ENDDEPENDENTFN '('
2772 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2773 | PARSEOP_ENDDEPENDENTFN '('
2774 error ')' {$$ = AslDoError(); yyclearin;}
2778 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2779 OptionalResourceType_First
2789 OptionalQWordConstExpr
2792 OptionalTranslationType_Last
2793 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2794 | PARSEOP_EXTENDEDIO '('
2795 error ')' {$$ = AslDoError(); yyclearin;}
2799 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2800 OptionalResourceType_First
2805 ',' OptionalReadWriteKeyword
2811 OptionalQWordConstExpr
2813 OptionalAddressRange
2815 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2816 | PARSEOP_EXTENDEDMEMORY '('
2817 error ')' {$$ = AslDoError(); yyclearin;}
2821 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2822 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2823 OptionalResourceType
2833 OptionalQWordConstExpr
2834 OptionalNameString_Last
2835 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2836 | PARSEOP_EXTENDEDSPACE '('
2837 error ')' {$$ = AslDoError(); yyclearin;}
2841 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2842 WordConstExpr // 04: DMA RequestLines
2843 ',' WordConstExpr // 06: DMA Channels
2844 OptionalXferSize // 07: DMA TransferSize
2845 OptionalNameString // 08: DescriptorName
2846 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2847 | PARSEOP_FIXEDDMA '('
2848 error ')' {$$ = AslDoError(); yyclearin;}
2852 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2855 OptionalNameString_Last
2856 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2857 | PARSEOP_FIXEDIO '('
2858 error ')' {$$ = AslDoError(); yyclearin;}
2862 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2863 InterruptTypeKeyword // 04: InterruptType
2864 ',' InterruptLevel // 06: InterruptLevel
2865 OptionalShareType // 07: SharedType
2866 ',' PinConfigByte // 09: PinConfig
2867 OptionalWordConstExpr // 10: DebounceTimeout
2868 ',' StringData // 12: ResourceSource
2869 OptionalByteConstExpr // 13: ResourceSourceIndex
2870 OptionalResourceType // 14: ResourceType
2871 OptionalNameString // 15: DescriptorName
2872 OptionalBuffer_Last // 16: VendorData
2874 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2875 | PARSEOP_GPIO_INT '('
2876 error ')' {$$ = AslDoError(); yyclearin;}
2880 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2881 OptionalShareType_First // 04: SharedType
2882 ',' PinConfigByte // 06: PinConfig
2883 OptionalWordConstExpr // 07: DebounceTimeout
2884 OptionalWordConstExpr // 08: DriveStrength
2885 OptionalIoRestriction // 09: IoRestriction
2886 ',' StringData // 11: ResourceSource
2887 OptionalByteConstExpr // 12: ResourceSourceIndex
2888 OptionalResourceType // 13: ResourceType
2889 OptionalNameString // 14: DescriptorName
2890 OptionalBuffer_Last // 15: VendorData
2892 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2893 | PARSEOP_GPIO_IO '('
2894 error ')' {$$ = AslDoError(); yyclearin;}
2898 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2899 WordConstExpr // 04: SlaveAddress
2900 OptionalSlaveMode // 05: SlaveMode
2901 ',' DWordConstExpr // 07: ConnectionSpeed
2902 OptionalAddressingMode // 08: AddressingMode
2903 ',' StringData // 10: ResourceSource
2904 OptionalByteConstExpr // 11: ResourceSourceIndex
2905 OptionalResourceType // 12: ResourceType
2906 OptionalNameString // 13: DescriptorName
2907 OptionalBuffer_Last // 14: VendorData
2908 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2909 | PARSEOP_I2C_SERIALBUS '('
2910 error ')' {$$ = AslDoError(); yyclearin;}
2914 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2915 OptionalResourceType_First
2916 ',' InterruptTypeKeyword
2919 OptionalByteConstExpr
2921 OptionalNameString_Last
2923 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2924 | PARSEOP_INTERRUPT '('
2925 error ')' {$$ = AslDoError(); yyclearin;}
2929 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2935 OptionalNameString_Last
2936 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2938 error ')' {$$ = AslDoError(); yyclearin;}
2942 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2943 OptionalNameString_First
2945 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2946 | PARSEOP_IRQNOFLAGS '('
2947 error ')' {$$ = AslDoError(); yyclearin;}
2951 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2952 InterruptTypeKeyword
2955 OptionalNameString_Last
2957 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2959 error ')' {$$ = AslDoError(); yyclearin;}
2963 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2964 OptionalReadWriteKeyword
2969 OptionalNameString_Last
2970 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2971 | PARSEOP_MEMORY24 '('
2972 error ')' {$$ = AslDoError(); yyclearin;}
2976 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2977 OptionalReadWriteKeyword
2980 OptionalNameString_Last
2981 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2982 | PARSEOP_MEMORY32FIXED '('
2983 error ')' {$$ = AslDoError(); yyclearin;}
2987 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2988 OptionalReadWriteKeyword
2993 OptionalNameString_Last
2994 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2995 | PARSEOP_MEMORY32 '('
2996 error ')' {$$ = AslDoError(); yyclearin;}
3000 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
3001 OptionalResourceType_First
3011 OptionalByteConstExpr
3015 OptionalTranslationType_Last
3016 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3017 | PARSEOP_QWORDIO '('
3018 error ')' {$$ = AslDoError(); yyclearin;}
3022 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
3023 OptionalResourceType_First
3028 ',' OptionalReadWriteKeyword
3034 OptionalByteConstExpr
3037 OptionalAddressRange
3039 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
3040 | PARSEOP_QWORDMEMORY '('
3041 error ')' {$$ = AslDoError(); yyclearin;}
3045 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
3046 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3047 OptionalResourceType
3057 OptionalByteConstExpr
3059 OptionalNameString_Last
3060 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3061 | PARSEOP_QWORDSPACE '('
3062 error ')' {$$ = AslDoError(); yyclearin;}
3066 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
3072 OptionalNameString_Last
3073 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
3074 | PARSEOP_REGISTER '('
3075 error ')' {$$ = AslDoError(); yyclearin;}
3079 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
3080 WordConstExpr // 04: DeviceSelection
3081 OptionalDevicePolarity // 05: DevicePolarity
3082 OptionalWireMode // 06: WireMode
3083 ',' ByteConstExpr // 08: DataBitLength
3084 OptionalSlaveMode // 09: SlaveMode
3085 ',' DWordConstExpr // 11: ConnectionSpeed
3086 ',' ClockPolarityKeyword // 13: ClockPolarity
3087 ',' ClockPhaseKeyword // 15: ClockPhase
3088 ',' StringData // 17: ResourceSource
3089 OptionalByteConstExpr // 18: ResourceSourceIndex
3090 OptionalResourceType // 19: ResourceType
3091 OptionalNameString // 20: DescriptorName
3092 OptionalBuffer_Last // 21: VendorData
3093 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
3094 | PARSEOP_SPI_SERIALBUS '('
3095 error ')' {$$ = AslDoError(); yyclearin;}
3098 StartDependentFnNoPriTerm
3099 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
3101 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
3102 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
3103 error ')' {$$ = AslDoError(); yyclearin;}
3106 StartDependentFnTerm
3107 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
3111 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
3112 | PARSEOP_STARTDEPENDENTFN '('
3113 error ')' {$$ = AslDoError(); yyclearin;}
3117 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
3118 DWordConstExpr // 04: ConnectionSpeed
3119 OptionalBitsPerByte // 05: BitsPerByte
3120 OptionalStopBits // 06: StopBits
3121 ',' ByteConstExpr // 08: LinesInUse
3122 OptionalEndian // 09: Endianess
3123 OptionalParityType // 10: Parity
3124 OptionalFlowControl // 11: FlowControl
3125 ',' WordConstExpr // 13: Rx BufferSize
3126 ',' WordConstExpr // 15: Tx BufferSize
3127 ',' StringData // 17: ResourceSource
3128 OptionalByteConstExpr // 18: ResourceSourceIndex
3129 OptionalResourceType // 19: ResourceType
3130 OptionalNameString // 20: DescriptorName
3131 OptionalBuffer_Last // 21: VendorData
3132 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
3133 | PARSEOP_UART_SERIALBUS '('
3134 error ')' {$$ = AslDoError(); yyclearin;}
3138 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
3139 OptionalNameString_First
3141 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3142 | PARSEOP_VENDORLONG '('
3143 error ')' {$$ = AslDoError(); yyclearin;}
3147 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
3148 OptionalNameString_First
3150 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3151 | PARSEOP_VENDORSHORT '('
3152 error ')' {$$ = AslDoError(); yyclearin;}
3156 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
3157 OptionalResourceType_First
3166 OptionalByteConstExpr
3168 OptionalNameString_Last
3169 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
3170 | PARSEOP_WORDBUSNUMBER '('
3171 error ')' {$$ = AslDoError(); yyclearin;}
3175 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
3176 OptionalResourceType_First
3186 OptionalByteConstExpr
3190 OptionalTranslationType_Last
3191 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3192 | PARSEOP_WORDIO '('
3193 error ')' {$$ = AslDoError(); yyclearin;}
3197 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
3198 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3199 OptionalResourceType
3209 OptionalByteConstExpr
3211 OptionalNameString_Last
3212 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3213 | PARSEOP_WORDSPACE '('
3214 error ')' {$$ = AslDoError(); yyclearin;}
3218 /******* Object References ***********************************************/
3220 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
3224 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3225 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
3226 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
3227 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
3231 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3235 /******* Helper rules ****************************************************/
3238 AmlPackageLengthTerm
3239 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
3243 : ',' NameString {$$ = $2;}
3244 | ',' error {$$ = AslDoError (); yyclearin;}
3248 : ',' TermArg {$$ = $2;}
3249 | ',' error {$$ = AslDoError (); yyclearin;}
3252 OptionalBusMasterKeyword
3253 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3254 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3255 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
3258 OptionalAccessAttribTerm
3261 | ',' ByteConstExpr {$$ = $2;}
3262 | ',' AccessAttribKeyword {$$ = $2;}
3266 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3267 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3268 | ',' ByteConstExpr {$$ = $2;}
3271 OptionalAddressingMode
3273 | ',' AddressingModeKeyword {$$ = $2;}
3276 OptionalAddressRange
3279 | ',' AddressKeyword {$$ = $2;}
3284 | ',' BitsPerByteKeyword {$$ = $2;}
3290 | ',' DataBufferTerm {$$ = $2;}
3293 OptionalByteConstExpr
3296 | ',' ByteConstExpr {$$ = $2;}
3301 | ',' DecodeKeyword {$$ = $2;}
3304 OptionalDevicePolarity
3306 | ',' DevicePolarityKeyword {$$ = $2;}
3309 OptionalDWordConstExpr
3312 | ',' DWordConstExpr {$$ = $2;}
3317 | ',' EndianKeyword {$$ = $2;}
3322 | ',' FlowControlKeyword {$$ = $2;}
3325 OptionalIoRestriction
3327 | ',' IoRestrictionKeyword {$$ = $2;}
3331 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3332 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3333 | ',' TermArg {$$ = $2;}
3338 | ',' MaxKeyword {$$ = $2;}
3343 | ',' MemTypeKeyword {$$ = $2;}
3348 | ',' MinKeyword {$$ = $2;}
3354 | ',' NameString {$$ = $2;}
3357 OptionalNameString_Last
3360 | ',' NameString {$$ = $2;}
3363 OptionalNameString_First
3364 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3365 | NameString {$$ = $1;}
3368 OptionalObjectTypeKeyword
3369 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3370 | ',' ObjectTypeKeyword {$$ = $2;}
3375 | ',' ParityTypeKeyword {$$ = $2;}
3378 OptionalQWordConstExpr
3381 | ',' QWordConstExpr {$$ = $2;}
3386 | ',' RangeTypeKeyword {$$ = $2;}
3389 OptionalReadWriteKeyword
3390 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3391 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3392 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
3396 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3397 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3398 | ',' TermArg {$$ = $2;}
3401 OptionalResourceType_First
3402 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3403 | ResourceTypeKeyword {$$ = $1;}
3406 OptionalResourceType
3407 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3408 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3409 | ',' ResourceTypeKeyword {$$ = $2;}
3413 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
3414 | TermArg {$$ = $1;}
3417 OptionalSerializeRuleKeyword
3420 | ',' SerializeRuleKeyword {$$ = $2;}
3425 | ',' SlaveModeKeyword {$$ = $2;}
3431 | ',' ShareTypeKeyword {$$ = $2;}
3434 OptionalShareType_First
3436 | ShareTypeKeyword {$$ = $1;}
3441 | ',' StopBitsKeyword {$$ = $2;}
3447 | ',' StringData {$$ = $2;}
3452 | TermArg {$$ = $1;}
3458 | ',' TypeKeyword {$$ = $2;}
3464 | ',' TypeKeyword {$$ = $2;}
3467 OptionalTranslationType_Last
3470 | ',' TranslationKeyword {$$ = $2;}
3475 | ',' WireModeKeyword {$$ = $2;}
3480 | WordConst {$$ = $1;}
3483 OptionalWordConstExpr
3485 | ',' WordConstExpr {$$ = $2;}
3489 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3490 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3491 | ',' XferSizeKeyword {$$ = $2;}
3495 /******************************************************************************
3497 * Local support functions
3499 *****************************************************************************/
3502 AslCompilerwrap(void)
3507 /*! [End] no source code translation !*/
3510 AslLocalAllocate (unsigned int Size)
3515 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
3517 Mem = ACPI_ALLOCATE_ZEROED (Size);
3520 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3521 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3522 Gbl_InputByteCount, Gbl_CurrentColumn,
3523 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3535 return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3540 /*******************************************************************************
3542 * FUNCTION: UtGetOpName
3544 * PARAMETERS: ParseOpcode - Parser keyword ID
3546 * RETURN: Pointer to the opcode name
3548 * DESCRIPTION: Get the ascii name of the parse opcode
3550 ******************************************************************************/
3556 #ifdef ASL_YYTNAME_START
3558 * First entries (ASL_YYTNAME_START) in yytname are special reserved names.
3559 * Ignore first 8 characters of the name
3561 return ((char *) yytname
3562 [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8);
3564 return ("[Unknown parser generator]");