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_PCI
367 %token <i> PARSEOP_REGIONSPACE_PCIBAR
368 %token <i> PARSEOP_REGIONSPACE_SMBUS
369 %token <i> PARSEOP_REGISTER
370 %token <i> PARSEOP_RELEASE
371 %token <i> PARSEOP_RESERVED_BYTES
372 %token <i> PARSEOP_RESET
373 %token <i> PARSEOP_RESOURCETEMPLATE
374 %token <i> PARSEOP_RESOURCETYPE_CONSUMER
375 %token <i> PARSEOP_RESOURCETYPE_PRODUCER
376 %token <i> PARSEOP_RETURN
377 %token <i> PARSEOP_REVISION
378 %token <i> PARSEOP_SCOPE
379 %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
380 %token <i> PARSEOP_SERIALIZERULE_SERIAL
381 %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
382 %token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
383 %token <i> PARSEOP_SHARETYPE_SHARED
384 %token <i> PARSEOP_SHARETYPE_SHAREDWAKE
385 %token <i> PARSEOP_SHIFTLEFT
386 %token <i> PARSEOP_SHIFTRIGHT
387 %token <i> PARSEOP_SIGNAL
388 %token <i> PARSEOP_SIZEOF
389 %token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
390 %token <i> PARSEOP_SLAVEMODE_DEVICEINIT
391 %token <i> PARSEOP_SLEEP
392 %token <i> PARSEOP_SPI_SERIALBUS
393 %token <i> PARSEOP_STALL
394 %token <i> PARSEOP_STARTDEPENDENTFN
395 %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
396 %token <i> PARSEOP_STOPBITS_ONE
397 %token <i> PARSEOP_STOPBITS_ONEPLUSHALF
398 %token <i> PARSEOP_STOPBITS_TWO
399 %token <i> PARSEOP_STOPBITS_ZERO
400 %token <i> PARSEOP_STORE
401 %token <s> PARSEOP_STRING_LITERAL
402 %token <i> PARSEOP_SUBTRACT
403 %token <i> PARSEOP_SWITCH
404 %token <i> PARSEOP_THERMALZONE
405 %token <i> PARSEOP_TIMER
406 %token <i> PARSEOP_TOBCD
407 %token <i> PARSEOP_TOBUFFER
408 %token <i> PARSEOP_TODECIMALSTRING
409 %token <i> PARSEOP_TOHEXSTRING
410 %token <i> PARSEOP_TOINTEGER
411 %token <i> PARSEOP_TOSTRING
412 %token <i> PARSEOP_TOUUID
413 %token <i> PARSEOP_TRANSLATIONTYPE_DENSE
414 %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
415 %token <i> PARSEOP_TYPE_STATIC
416 %token <i> PARSEOP_TYPE_TRANSLATION
417 %token <i> PARSEOP_UART_SERIALBUS
418 %token <i> PARSEOP_UNICODE
419 %token <i> PARSEOP_UNLOAD
420 %token <i> PARSEOP_UPDATERULE_ONES
421 %token <i> PARSEOP_UPDATERULE_PRESERVE
422 %token <i> PARSEOP_UPDATERULE_ZEROS
423 %token <i> PARSEOP_VAR_PACKAGE
424 %token <i> PARSEOP_VENDORLONG
425 %token <i> PARSEOP_VENDORSHORT
426 %token <i> PARSEOP_WAIT
427 %token <i> PARSEOP_WHILE
428 %token <i> PARSEOP_WIREMODE_FOUR
429 %token <i> PARSEOP_WIREMODE_THREE
430 %token <i> PARSEOP_WORDBUSNUMBER
431 %token <i> PARSEOP_WORDCONST
432 %token <i> PARSEOP_WORDIO
433 %token <i> PARSEOP_WORDSPACE
434 %token <i> PARSEOP_XFERSIZE_8
435 %token <i> PARSEOP_XFERSIZE_16
436 %token <i> PARSEOP_XFERSIZE_32
437 %token <i> PARSEOP_XFERSIZE_64
438 %token <i> PARSEOP_XFERSIZE_128
439 %token <i> PARSEOP_XFERSIZE_256
440 %token <i> PARSEOP_XFERTYPE_8
441 %token <i> PARSEOP_XFERTYPE_8_16
442 %token <i> PARSEOP_XFERTYPE_16
443 %token <i> PARSEOP_XOR
444 %token <i> PARSEOP_ZERO
447 * Special functions. These should probably stay at the end of this
450 %token <i> PARSEOP___DATE__
451 %token <i> PARSEOP___FILE__
452 %token <i> PARSEOP___LINE__
453 %token <i> PARSEOP___PATH__
456 /******************************************************************************
460 *****************************************************************************/
465 %type <n> BufferTermData
466 %type <n> CompilerDirective
468 %type <n> DefinitionBlockTerm
469 %type <n> IntegerData
470 %type <n> NamedObject
471 %type <n> NameSpaceModifier
474 %type <n> PackageData
475 %type <n> ParameterTypePackage
476 %type <n> ParameterTypePackageList
477 %type <n> ParameterTypesPackage
478 %type <n> ParameterTypesPackageList
479 %type <n> RequiredTarget
480 %type <n> SimpleTarget
488 /* Type4Opcode is obsolete */
490 %type <n> Type1Opcode
491 %type <n> Type2BufferOpcode
492 %type <n> Type2BufferOrStringOpcode
493 %type <n> Type2IntegerOpcode
494 %type <n> Type2Opcode
495 %type <n> Type2StringOpcode
496 %type <n> Type3Opcode
497 %type <n> Type5Opcode
498 %type <n> Type6Opcode
500 %type <n> AccessAsTerm
501 %type <n> ExternalTerm
503 %type <n> FieldUnitEntry
504 %type <n> FieldUnitList
505 %type <n> IncludeTerm
507 %type <n> OptionalAccessAttribTerm
511 %type <n> BankFieldTerm
512 %type <n> CreateBitFieldTerm
513 %type <n> CreateByteFieldTerm
514 %type <n> CreateDWordFieldTerm
515 %type <n> CreateFieldTerm
516 %type <n> CreateQWordFieldTerm
517 %type <n> CreateWordFieldTerm
518 %type <n> DataRegionTerm
522 %type <n> FunctionTerm
523 %type <n> IndexFieldTerm
526 %type <n> OpRegionTerm
527 %type <n> OpRegionSpaceIdTerm
528 %type <n> PowerResTerm
529 %type <n> ProcessorTerm
530 %type <n> ThermalZoneTerm
532 /* Namespace modifiers */
540 %type <n> BreakPointTerm
542 %type <n> CaseDefaultTermList
544 %type <n> ContinueTerm
545 %type <n> DefaultTerm
553 %type <n> ReleaseTerm
562 //%type <n> CaseTermList
566 %type <n> AcquireTerm
569 %type <n> ConcatResTerm
571 %type <n> CondRefOfTerm
572 %type <n> CopyObjectTerm
574 %type <n> DerefOfTerm
576 %type <n> FindSetLeftBitTerm
577 %type <n> FindSetRightBitTerm
578 %type <n> FromBCDTerm
583 %type <n> LGreaterEqualTerm
584 %type <n> LGreaterTerm
585 %type <n> LLessEqualTerm
587 %type <n> LNotEqualTerm
589 %type <n> LoadTableTerm
594 %type <n> MultiplyTerm
598 %type <n> ObjectTypeTerm
601 %type <n> ShiftLeftTerm
602 %type <n> ShiftRightTerm
605 %type <n> SubtractTerm
608 %type <n> ToBufferTerm
609 %type <n> ToDecimalStringTerm
610 %type <n> ToHexStringTerm
611 %type <n> ToIntegerTerm
612 %type <n> ToStringTerm
618 %type <n> AccessAttribKeyword
619 %type <n> AccessTypeKeyword
620 %type <n> AddressingModeKeyword
621 %type <n> AddressKeyword
622 %type <n> AddressSpaceKeyword
623 %type <n> BitsPerByteKeyword
624 %type <n> ClockPhaseKeyword
625 %type <n> ClockPolarityKeyword
626 %type <n> DecodeKeyword
627 %type <n> DevicePolarityKeyword
628 %type <n> DMATypeKeyword
629 %type <n> EndianKeyword
630 %type <n> FlowControlKeyword
631 %type <n> InterruptLevel
632 %type <n> InterruptTypeKeyword
633 %type <n> IODecodeKeyword
634 %type <n> IoRestrictionKeyword
635 %type <n> LockRuleKeyword
636 %type <n> MatchOpKeyword
638 %type <n> MemTypeKeyword
640 %type <n> ObjectTypeKeyword
641 %type <n> OptionalBusMasterKeyword
642 %type <n> OptionalReadWriteKeyword
643 %type <n> ParityTypeKeyword
644 %type <n> PinConfigByte
645 %type <n> PinConfigKeyword
646 %type <n> RangeTypeKeyword
647 %type <n> RegionSpaceKeyword
648 %type <n> ResourceTypeKeyword
649 %type <n> SerializeRuleKeyword
650 %type <n> ShareTypeKeyword
651 %type <n> SlaveModeKeyword
652 %type <n> StopBitsKeyword
653 %type <n> TranslationKeyword
654 %type <n> TypeKeyword
655 %type <n> UpdateRuleKeyword
656 %type <n> WireModeKeyword
657 %type <n> XferSizeKeyword
658 %type <n> XferTypeKeyword
675 %type <n> ConstExprTerm
676 %type <n> ByteConstExpr
677 %type <n> WordConstExpr
678 %type <n> DWordConstExpr
679 %type <n> QWordConstExpr
685 %type <n> PackageElement
686 %type <n> PackageList
687 %type <n> PackageTerm
688 %type <n> VarPackageLengthTerm
693 %type <n> ResourceMacroList
694 %type <n> ResourceMacroTerm
695 %type <n> ResourceTemplateTerm
697 %type <n> UnicodeTerm
699 /* Resource Descriptors */
701 %type <n> ConnectionTerm
702 %type <n> DataBufferTerm
704 %type <n> DWordIOTerm
705 %type <n> DWordMemoryTerm
706 %type <n> DWordSpaceTerm
707 %type <n> EndDependentFnTerm
708 %type <n> ExtendedIOTerm
709 %type <n> ExtendedMemoryTerm
710 %type <n> ExtendedSpaceTerm
711 %type <n> FixedDmaTerm
712 %type <n> FixedIOTerm
713 %type <n> GpioIntTerm
715 %type <n> I2cSerialBusTerm
716 %type <n> InterruptTerm
718 %type <n> IRQNoFlagsTerm
720 %type <n> Memory24Term
721 %type <n> Memory32FixedTerm
722 %type <n> Memory32Term
725 %type <n> QWordIOTerm
726 %type <n> QWordMemoryTerm
727 %type <n> QWordSpaceTerm
728 %type <n> RegisterTerm
729 %type <n> SpiSerialBusTerm
730 %type <n> StartDependentFnNoPriTerm
731 %type <n> StartDependentFnTerm
732 %type <n> UartSerialBusTerm
733 %type <n> VendorLongTerm
734 %type <n> VendorShortTerm
735 %type <n> WordBusNumberTerm
737 %type <n> WordSpaceTerm
739 /* Local types that help construct the AML, not in ACPI spec */
741 %type <n> AmlPackageLengthTerm
742 %type <n> IncludeEndTerm
743 %type <n> NameStringItem
744 %type <n> TermArgItem
746 %type <n> OptionalAccessSize
747 %type <n> OptionalAddressingMode
748 %type <n> OptionalAddressRange
749 %type <n> OptionalBitsPerByte
750 %type <n> OptionalBuffer_Last
751 %type <n> OptionalByteConstExpr
752 %type <n> OptionalCount
753 %type <n> OptionalDecodeType
754 %type <n> OptionalDevicePolarity
755 %type <n> OptionalDWordConstExpr
756 %type <n> OptionalEndian
757 %type <n> OptionalFlowControl
758 %type <n> OptionalIoRestriction
759 %type <n> OptionalListString
760 %type <n> OptionalMaxType
761 %type <n> OptionalMemType
762 %type <n> OptionalMinType
763 %type <n> OptionalNameString
764 %type <n> OptionalNameString_First
765 %type <n> OptionalNameString_Last
766 %type <n> OptionalObjectTypeKeyword
767 %type <n> OptionalParameterTypePackage
768 %type <n> OptionalParameterTypesPackage
769 %type <n> OptionalParityType
770 %type <n> OptionalQWordConstExpr
771 %type <n> OptionalRangeType
772 %type <n> OptionalReference
773 %type <n> OptionalResourceType
774 %type <n> OptionalResourceType_First
775 %type <n> OptionalReturnArg
776 %type <n> OptionalSerializeRuleKeyword
777 %type <n> OptionalShareType
778 %type <n> OptionalShareType_First
779 %type <n> OptionalSlaveMode
780 %type <n> OptionalStopBits
781 %type <n> OptionalStringData
782 %type <n> OptionalTermArg
783 %type <n> OptionalTranslationType_Last
784 %type <n> OptionalType
785 %type <n> OptionalType_Last
786 %type <n> OptionalWireMode
787 %type <n> OptionalWordConst
788 %type <n> OptionalWordConstExpr
789 %type <n> OptionalXferSize
792 /*******************************************************************************
794 * Production rules start here
796 ******************************************************************************/
804 * Root rule. Allow multiple #line directives before the definition block
805 * to handle output from preprocessors
808 : DefinitionBlockTerm
809 | error {YYABORT; $$ = NULL;}
813 * Blocks, Data, and Opcodes
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;}
871 | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);}
872 | error {$$ = AslDoError(); yyclearin;}
876 : CompilerDirective {}
878 | NameSpaceModifier {}
889 : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
890 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
891 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
900 : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
901 | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
907 : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
913 | CreateBitFieldTerm {}
914 | CreateByteFieldTerm {}
915 | CreateDWordFieldTerm {}
917 | CreateQWordFieldTerm {}
918 | CreateWordFieldTerm {}
940 : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);}
941 ArgList ')' {$$ = TrLinkChildNode ($1,$4);}
947 | ArgList ',' /* Allows a trailing comma at list end */
949 TermArg {$$ = TrLinkPeerNode ($1,$3);}
953 Removed from TermArg due to reduce/reduce conflicts
954 | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
955 | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
956 | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
957 | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
962 : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
963 | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
964 | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
965 | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
966 | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
970 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
971 | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
972 | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
976 : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
985 /* Rules for specifying the type of one method argument or return value */
989 | ObjectTypeKeyword {$$ = $1;}
990 | ParameterTypePackage ','
991 ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);}
994 ParameterTypePackageList
996 | ObjectTypeKeyword {$$ = $1;}
997 | '{' ParameterTypePackage '}' {$$ = $2;}
1000 OptionalParameterTypePackage
1001 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1002 | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1005 /* Rules for specifying the types for method arguments */
1007 ParameterTypesPackage
1008 : ParameterTypePackageList {$$ = $1;}
1009 | ParameterTypesPackage ','
1010 ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);}
1013 ParameterTypesPackageList
1015 | ObjectTypeKeyword {$$ = $1;}
1016 | '{' ParameterTypesPackage '}' {$$ = $2;}
1019 OptionalParameterTypesPackage
1020 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
1021 | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
1062 * Type 3/4/5 opcodes
1065 Type2IntegerOpcode /* "Type3" opcodes */
1070 | FindSetLeftBitTerm {}
1071 | FindSetRightBitTerm {}
1078 | LGreaterEqualTerm {}
1100 Type2StringOpcode /* "Type4" Opcodes */
1101 : ToDecimalStringTerm {}
1102 | ToHexStringTerm {}
1106 Type2BufferOpcode /* "Type5" Opcodes */
1111 Type2BufferOrStringOpcode
1117 * A type 3 opcode evaluates to an Integer and cannot have a destination operand
1127 | ToDecimalStringTerm {}
1128 | ToHexStringTerm {}
1136 : ResourceTemplateTerm {}
1149 : PARSEOP_INCLUDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
1150 String ')' {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
1152 IncludeEndTerm {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
1156 : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
1160 : PARSEOP_EXTERNAL '('
1162 OptionalObjectTypeKeyword
1163 OptionalParameterTypePackage
1164 OptionalParameterTypesPackage
1165 ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
1166 | PARSEOP_EXTERNAL '('
1167 error ')' {$$ = AslDoError(); yyclearin;}
1171 /******* Named Objects *******************************************************/
1175 : PARSEOP_BANKFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
1179 ',' AccessTypeKeyword
1181 ',' UpdateRuleKeyword
1183 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
1184 | PARSEOP_BANKFIELD '('
1185 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1191 | FieldUnitList ',' /* Allows a trailing comma at list end */
1193 FieldUnit {$$ = TrLinkPeerNode ($1,$3);}
1204 : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
1206 AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);}
1210 : PARSEOP_OFFSET '('
1211 AmlPackageLengthTerm
1212 ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
1213 | PARSEOP_OFFSET '('
1214 error ')' {$$ = AslDoError(); yyclearin;}
1218 : PARSEOP_ACCESSAS '('
1220 OptionalAccessAttribTerm
1221 ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
1222 | PARSEOP_ACCESSAS '('
1223 error ')' {$$ = AslDoError(); yyclearin;}
1227 : PARSEOP_CONNECTION '('
1229 ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
1230 | PARSEOP_CONNECTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
1232 ')' {$$ = TrLinkChildren ($<n>3, 1,
1233 TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
1234 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1235 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
1237 | PARSEOP_CONNECTION '('
1238 error ')' {$$ = AslDoError(); yyclearin;}
1242 : PARSEOP_CREATEBITFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
1246 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1247 | PARSEOP_CREATEBITFIELD '('
1248 error ')' {$$ = AslDoError(); yyclearin;}
1252 : PARSEOP_CREATEBYTEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
1256 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1257 | PARSEOP_CREATEBYTEFIELD '('
1258 error ')' {$$ = AslDoError(); yyclearin;}
1261 CreateDWordFieldTerm
1262 : PARSEOP_CREATEDWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
1266 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1267 | PARSEOP_CREATEDWORDFIELD '('
1268 error ')' {$$ = AslDoError(); yyclearin;}
1272 : PARSEOP_CREATEFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
1277 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
1278 | PARSEOP_CREATEFIELD '('
1279 error ')' {$$ = AslDoError(); yyclearin;}
1282 CreateQWordFieldTerm
1283 : PARSEOP_CREATEQWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
1287 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1288 | PARSEOP_CREATEQWORDFIELD '('
1289 error ')' {$$ = AslDoError(); yyclearin;}
1293 : PARSEOP_CREATEWORDFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
1297 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
1298 | PARSEOP_CREATEWORDFIELD '('
1299 error ')' {$$ = AslDoError(); yyclearin;}
1303 : PARSEOP_DATATABLEREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
1308 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
1309 | PARSEOP_DATATABLEREGION '('
1310 error ')' {$$ = AslDoError(); yyclearin;}
1314 : PARSEOP_DEVICE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
1317 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1318 | PARSEOP_DEVICE '('
1319 error ')' {$$ = AslDoError(); yyclearin;}
1323 : PARSEOP_EVENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
1325 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
1327 error ')' {$$ = AslDoError(); yyclearin;}
1331 : PARSEOP_FIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
1333 ',' AccessTypeKeyword
1335 ',' UpdateRuleKeyword
1337 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
1339 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1343 : PARSEOP_FUNCTION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1345 OptionalParameterTypePackage
1346 OptionalParameterTypesPackage
1348 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
1349 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
1350 TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
1351 TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
1352 | PARSEOP_FUNCTION '('
1353 error ')' {$$ = AslDoError(); yyclearin;}
1357 : PARSEOP_INDEXFIELD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
1360 ',' AccessTypeKeyword
1362 ',' UpdateRuleKeyword
1364 FieldUnitList '}' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
1365 | PARSEOP_INDEXFIELD '('
1366 error ')' '{' error '}' {$$ = AslDoError(); yyclearin;}
1370 : PARSEOP_METHOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
1372 OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);}
1373 OptionalSerializeRuleKeyword
1374 OptionalByteConstExpr
1375 OptionalParameterTypePackage
1376 OptionalParameterTypesPackage
1378 TermList '}' {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
1379 | PARSEOP_METHOD '('
1380 error ')' {$$ = AslDoError(); yyclearin;}
1384 : PARSEOP_MUTEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
1387 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1389 error ')' {$$ = AslDoError(); yyclearin;}
1393 : PARSEOP_OPERATIONREGION '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
1395 ',' OpRegionSpaceIdTerm
1398 ')' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
1399 | PARSEOP_OPERATIONREGION '('
1400 error ')' {$$ = AslDoError(); yyclearin;}
1404 : RegionSpaceKeyword {}
1405 | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
1409 : PARSEOP_POWERRESOURCE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
1414 ObjectList '}' {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
1415 | PARSEOP_POWERRESOURCE '('
1416 error ')' {$$ = AslDoError(); yyclearin;}
1420 : PARSEOP_PROCESSOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
1423 OptionalDWordConstExpr
1424 OptionalByteConstExpr
1426 ObjectList '}' {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
1427 | PARSEOP_PROCESSOR '('
1428 error ')' {$$ = AslDoError(); yyclearin;}
1432 : PARSEOP_THERMALZONE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
1435 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1436 | PARSEOP_THERMALZONE '('
1437 error ')' {$$ = AslDoError(); yyclearin;}
1441 /******* Namespace modifiers *************************************************/
1445 : PARSEOP_ALIAS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
1448 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
1450 error ')' {$$ = AslDoError(); yyclearin;}
1454 : PARSEOP_NAME '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
1457 ')' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
1459 error ')' {$$ = AslDoError(); yyclearin;}
1463 : PARSEOP_SCOPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
1466 ObjectList '}' {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
1468 error ')' {$$ = AslDoError(); yyclearin;}
1472 /******* Type 1 opcodes *******************************************************/
1476 : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
1480 : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
1484 : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
1488 : PARSEOP_FATAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
1492 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
1494 error ')' {$$ = AslDoError(); yyclearin;}
1498 : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);}
1502 : PARSEOP_IF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1505 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1508 error ')' {$$ = AslDoError(); yyclearin;}
1513 | PARSEOP_ELSE '{' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1514 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1517 error '}' {$$ = AslDoError(); yyclearin;}
1520 error {$$ = AslDoError(); yyclearin;}
1522 | PARSEOP_ELSEIF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
1523 TermArg {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
1525 TermList '}' {TrLinkChildren ($<n>5,2,$4,$8);}
1526 ElseTerm {TrLinkPeerNode ($<n>5,$11);}
1527 {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
1529 | PARSEOP_ELSEIF '('
1530 error ')' {$$ = AslDoError(); yyclearin;}
1533 error {$$ = AslDoError(); yyclearin;}
1537 : PARSEOP_LOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
1540 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1542 error ')' {$$ = AslDoError(); yyclearin;}
1546 : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
1550 : PARSEOP_NOTIFY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
1553 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1554 | PARSEOP_NOTIFY '('
1555 error ')' {$$ = AslDoError(); yyclearin;}
1559 : PARSEOP_RELEASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
1561 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1562 | PARSEOP_RELEASE '('
1563 error ')' {$$ = AslDoError(); yyclearin;}
1567 : PARSEOP_RESET '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
1569 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1571 error ')' {$$ = AslDoError(); yyclearin;}
1575 : PARSEOP_RETURN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
1577 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1578 | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
1579 | PARSEOP_RETURN '('
1580 error ')' {$$ = AslDoError(); yyclearin;}
1584 : PARSEOP_SIGNAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
1586 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1587 | PARSEOP_SIGNAL '('
1588 error ')' {$$ = AslDoError(); yyclearin;}
1592 : PARSEOP_SLEEP '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
1594 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1596 error ')' {$$ = AslDoError(); yyclearin;}
1600 : PARSEOP_STALL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
1602 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1604 error ')' {$$ = AslDoError(); yyclearin;}
1608 : PARSEOP_SWITCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
1611 CaseDefaultTermList '}'
1612 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1613 | PARSEOP_SWITCH '('
1614 error ')' {$$ = AslDoError(); yyclearin;}
1618 * Case-Default list; allow only one Default term and unlimited Case terms
1625 | CaseDefaultTermList
1626 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1627 | CaseDefaultTermList
1628 DefaultTerm {$$ = TrLinkPeerNode ($1,$2);}
1630 /* Original - attempts to force zero or one default term within the switch */
1637 CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
1639 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1646 CaseTerm {$$ = TrLinkPeerNode ($1,$2);}
1651 : PARSEOP_CASE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
1654 TermList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1656 error ')' {$$ = AslDoError(); yyclearin;}
1660 : PARSEOP_DEFAULT '{' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
1661 TermList '}' {$$ = TrLinkChildren ($<n>3,1,$4);}
1662 | PARSEOP_DEFAULT '{'
1663 error '}' {$$ = AslDoError(); yyclearin;}
1667 : PARSEOP_UNLOAD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
1669 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1670 | PARSEOP_UNLOAD '('
1671 error ')' {$$ = AslDoError(); yyclearin;}
1675 : PARSEOP_WHILE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
1677 ')' '{' TermList '}'
1678 {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
1680 error ')' {$$ = AslDoError(); yyclearin;}
1684 /******* Type 2 opcodes *******************************************************/
1687 : PARSEOP_ACQUIRE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
1690 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
1691 | PARSEOP_ACQUIRE '('
1692 error ')' {$$ = AslDoError(); yyclearin;}
1696 : PARSEOP_ADD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
1700 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1702 error ')' {$$ = AslDoError(); yyclearin;}
1706 : PARSEOP_AND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
1710 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1712 error ')' {$$ = AslDoError(); yyclearin;}
1716 : PARSEOP_CONCATENATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
1720 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1721 | PARSEOP_CONCATENATE '('
1722 error ')' {$$ = AslDoError(); yyclearin;}
1726 : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
1730 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1731 | PARSEOP_CONCATENATERESTEMPLATE '('
1732 error ')' {$$ = AslDoError(); yyclearin;}
1736 : PARSEOP_CONDREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
1739 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1740 | PARSEOP_CONDREFOF '('
1741 error ')' {$$ = AslDoError(); yyclearin;}
1745 : PARSEOP_COPYOBJECT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
1748 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
1749 | PARSEOP_COPYOBJECT '('
1750 error ')' {$$ = AslDoError(); yyclearin;}
1754 : PARSEOP_DECREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
1756 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1757 | PARSEOP_DECREMENT '('
1758 error ')' {$$ = AslDoError(); yyclearin;}
1762 : PARSEOP_DEREFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
1764 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1765 | PARSEOP_DEREFOF '('
1766 error ')' {$$ = AslDoError(); yyclearin;}
1770 : PARSEOP_DIVIDE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
1775 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1776 | PARSEOP_DIVIDE '('
1777 error ')' {$$ = AslDoError(); yyclearin;}
1781 : PARSEOP_FINDSETLEFTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
1784 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1785 | PARSEOP_FINDSETLEFTBIT '('
1786 error ')' {$$ = AslDoError(); yyclearin;}
1790 : PARSEOP_FINDSETRIGHTBIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
1793 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1794 | PARSEOP_FINDSETRIGHTBIT '('
1795 error ')' {$$ = AslDoError(); yyclearin;}
1799 : PARSEOP_FROMBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
1802 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1803 | PARSEOP_FROMBCD '('
1804 error ')' {$$ = AslDoError(); yyclearin;}
1808 : PARSEOP_INCREMENT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
1810 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1811 | PARSEOP_INCREMENT '('
1812 error ')' {$$ = AslDoError(); yyclearin;}
1816 : PARSEOP_INDEX '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
1820 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1822 error ')' {$$ = AslDoError(); yyclearin;}
1826 : PARSEOP_LAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
1829 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1831 error ')' {$$ = AslDoError(); yyclearin;}
1835 : PARSEOP_LEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1838 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1839 | PARSEOP_LEQUAL '('
1840 error ')' {$$ = AslDoError(); yyclearin;}
1844 : PARSEOP_LGREATER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1847 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1848 | PARSEOP_LGREATER '('
1849 error ')' {$$ = AslDoError(); yyclearin;}
1853 : PARSEOP_LGREATEREQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1856 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1857 | PARSEOP_LGREATEREQUAL '('
1858 error ')' {$$ = AslDoError(); yyclearin;}
1862 : PARSEOP_LLESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
1865 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1867 error ')' {$$ = AslDoError(); yyclearin;}
1871 : PARSEOP_LLESSEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
1874 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1875 | PARSEOP_LLESSEQUAL '('
1876 error ')' {$$ = AslDoError(); yyclearin;}
1880 : PARSEOP_LNOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
1882 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1884 error ')' {$$ = AslDoError(); yyclearin;}
1888 : PARSEOP_LNOTEQUAL '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
1891 ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
1892 | PARSEOP_LNOTEQUAL '('
1893 error ')' {$$ = AslDoError(); yyclearin;}
1897 : PARSEOP_LOADTABLE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
1904 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
1905 | PARSEOP_LOADTABLE '('
1906 error ')' {$$ = AslDoError(); yyclearin;}
1910 : PARSEOP_LOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
1913 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1915 error ')' {$$ = AslDoError(); yyclearin;}
1919 : PARSEOP_MATCH '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
1926 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
1928 error ')' {$$ = AslDoError(); yyclearin;}
1932 : PARSEOP_MID '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
1937 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
1939 error ')' {$$ = AslDoError(); yyclearin;}
1943 : PARSEOP_MOD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
1947 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1949 error ')' {$$ = AslDoError(); yyclearin;}
1953 : PARSEOP_MULTIPLY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
1957 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1958 | PARSEOP_MULTIPLY '('
1959 error ')' {$$ = AslDoError(); yyclearin;}
1963 : PARSEOP_NAND '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
1967 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1969 error ')' {$$ = AslDoError(); yyclearin;}
1973 : PARSEOP_NOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
1977 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
1979 error ')' {$$ = AslDoError(); yyclearin;}
1983 : PARSEOP_NOT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
1986 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
1988 error ')' {$$ = AslDoError(); yyclearin;}
1992 : PARSEOP_OBJECTTYPE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
1994 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
1995 | PARSEOP_OBJECTTYPE '('
1996 error ')' {$$ = AslDoError(); yyclearin;}
2000 : PARSEOP_OR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
2004 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2006 error ')' {$$ = AslDoError(); yyclearin;}
2010 * In RefOf, the node isn't really a target, but we can't keep track of it after
2011 * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
2014 : PARSEOP_REFOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
2016 ')' {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
2018 error ')' {$$ = AslDoError(); yyclearin;}
2022 : PARSEOP_SHIFTLEFT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
2026 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2027 | PARSEOP_SHIFTLEFT '('
2028 error ')' {$$ = AslDoError(); yyclearin;}
2032 : PARSEOP_SHIFTRIGHT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
2036 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2037 | PARSEOP_SHIFTRIGHT '('
2038 error ')' {$$ = AslDoError(); yyclearin;}
2042 : PARSEOP_SIZEOF '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
2044 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2045 | PARSEOP_SIZEOF '('
2046 error ')' {$$ = AslDoError(); yyclearin;}
2050 : PARSEOP_STORE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
2053 ')' {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
2055 error ')' {$$ = AslDoError(); yyclearin;}
2059 : PARSEOP_SUBTRACT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
2063 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2064 | PARSEOP_SUBTRACT '('
2065 error ')' {$$ = AslDoError(); yyclearin;}
2069 : PARSEOP_TIMER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
2070 ')' {$$ = TrLinkChildren ($<n>3,0);}
2071 | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
2073 error ')' {$$ = AslDoError(); yyclearin;}
2077 : PARSEOP_TOBCD '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
2080 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2082 error ')' {$$ = AslDoError(); yyclearin;}
2086 : PARSEOP_TOBUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
2089 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2090 | PARSEOP_TOBUFFER '('
2091 error ')' {$$ = AslDoError(); yyclearin;}
2095 : PARSEOP_TODECIMALSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
2098 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2099 | PARSEOP_TODECIMALSTRING '('
2100 error ')' {$$ = AslDoError(); yyclearin;}
2104 : PARSEOP_TOHEXSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
2107 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2108 | PARSEOP_TOHEXSTRING '('
2109 error ')' {$$ = AslDoError(); yyclearin;}
2113 : PARSEOP_TOINTEGER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
2116 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2117 | PARSEOP_TOINTEGER '('
2118 error ')' {$$ = AslDoError(); yyclearin;}
2122 : PARSEOP_TOSTRING '(' {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
2126 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2127 | PARSEOP_TOSTRING '('
2128 error ')' {$$ = AslDoError(); yyclearin;}
2132 : PARSEOP_TOUUID '('
2133 StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
2134 | PARSEOP_TOUUID '('
2135 error ')' {$$ = AslDoError(); yyclearin;}
2139 : PARSEOP_WAIT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
2142 ')' {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
2144 error ')' {$$ = AslDoError(); yyclearin;}
2148 : PARSEOP_XOR '(' {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
2152 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
2154 error ')' {$$ = AslDoError(); yyclearin;}
2158 /******* Keywords *************************************************************/
2162 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
2163 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
2164 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
2165 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
2166 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
2167 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
2168 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
2169 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
2171 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2172 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
2174 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2175 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
2177 ')' {$$ = TrLinkChildren ($<n>3,1,$4);}
2181 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
2182 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
2183 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
2184 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
2185 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
2186 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
2189 AddressingModeKeyword
2190 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
2191 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
2195 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
2196 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
2197 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
2198 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
2202 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
2203 | RegionSpaceKeyword {}
2207 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
2208 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
2209 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
2210 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
2211 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
2215 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
2216 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
2219 ClockPolarityKeyword
2220 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
2221 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
2225 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
2226 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
2229 DevicePolarityKeyword
2230 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
2231 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
2235 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
2236 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
2237 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
2238 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
2242 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
2243 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
2247 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
2248 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
2249 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
2253 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
2254 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
2255 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
2258 InterruptTypeKeyword
2259 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
2260 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
2264 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
2265 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
2268 IoRestrictionKeyword
2269 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
2270 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
2271 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
2272 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
2276 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
2277 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
2281 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
2282 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
2283 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
2284 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
2285 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
2286 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
2290 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
2291 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
2295 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
2296 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
2297 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
2298 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
2302 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
2303 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
2307 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
2308 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
2309 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
2310 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
2311 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
2312 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
2313 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
2314 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
2315 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
2316 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
2317 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
2318 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
2319 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
2320 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
2321 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
2322 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
2326 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
2327 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
2328 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
2329 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
2330 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
2334 : PinConfigKeyword {$$ = $1;}
2335 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
2339 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
2340 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
2341 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
2342 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
2346 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
2347 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
2348 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
2352 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
2353 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
2354 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
2355 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
2356 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
2357 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
2358 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
2359 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
2360 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
2361 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
2362 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
2366 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
2367 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
2370 SerializeRuleKeyword
2371 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
2372 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
2376 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
2377 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
2378 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
2379 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
2383 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
2384 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
2388 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
2389 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
2390 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
2391 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
2395 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
2396 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
2400 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
2401 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
2405 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
2406 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
2407 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
2411 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
2412 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
2416 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);}
2417 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);}
2418 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
2419 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);}
2420 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
2421 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
2425 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
2426 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
2427 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
2431 /******* Miscellaneous Types **************************************************/
2440 /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */
2444 : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
2445 | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
2446 | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
2447 | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
2448 | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
2449 | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
2450 | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
2454 : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
2455 | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
2456 | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
2457 | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
2458 | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
2459 | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
2460 | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
2461 | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
2465 : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
2470 : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2474 : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2478 : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2482 : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2486 : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
2490 : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
2495 | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
2499 : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
2500 | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
2501 | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
2502 | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
2503 | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
2504 | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
2505 | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
2509 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2510 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2511 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
2516 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2517 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2518 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
2523 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2524 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2525 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
2530 : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2531 | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2532 | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
2536 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
2539 : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2540 | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */
2541 | ',' TermArg {$$ = $2;}
2545 : PARSEOP_BUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
2548 BufferTermData '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2549 | PARSEOP_BUFFER '('
2550 error ')' {$$ = AslDoError(); yyclearin;}
2561 | ByteList ',' /* Allows a trailing comma at list end */
2563 ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2567 : PARSEOP_DATABUFFER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
2570 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2571 | PARSEOP_DATABUFFER '('
2572 error ')' {$$ = AslDoError(); yyclearin;}
2578 | DWordList ',' /* Allows a trailing comma at list end */
2580 DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);}
2584 : PARSEOP_PACKAGE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
2585 VarPackageLengthTerm
2587 PackageList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2588 | PARSEOP_PACKAGE '('
2589 error ')' {$$ = AslDoError(); yyclearin;}
2595 | PackageList ',' /* Allows a trailing comma at list end */
2597 PackageElement {$$ = TrLinkPeerNode ($1,$3);}
2605 VarPackageLengthTerm
2606 : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
2607 | TermArg {$$ = $1;}
2611 /******* Macros ***********************************************/
2615 : PARSEOP_EISAID '('
2616 StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
2617 | PARSEOP_EISAID '('
2618 error ')' {$$ = AslDoError(); yyclearin;}
2622 : PARSEOP_UNICODE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
2624 ')' {$$ = TrLinkChildren ($<n>3,2,0,$4);}
2625 | PARSEOP_UNICODE '('
2626 error ')' {$$ = AslDoError(); yyclearin;}
2630 /******* Resources and Memory ***********************************************/
2634 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
2635 * Also, insert the EndTag at the end of the template.
2637 ResourceTemplateTerm
2638 : PARSEOP_RESOURCETEMPLATE '(' ')'
2640 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
2641 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2642 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
2644 TrCreateLeafNode (PARSEOP_ENDTAG));}
2650 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
2656 | DWordMemoryTerm {}
2658 | EndDependentFnTerm {}
2660 | ExtendedMemoryTerm {}
2661 | ExtendedSpaceTerm {}
2666 | I2cSerialBusTerm {}
2672 | Memory32FixedTerm {}
2675 | QWordMemoryTerm {}
2678 | SpiSerialBusTerm {}
2679 | StartDependentFnNoPriTerm {}
2680 | StartDependentFnTerm {}
2681 | UartSerialBusTerm {}
2683 | VendorShortTerm {}
2684 | WordBusNumberTerm {}
2690 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
2692 OptionalBusMasterKeyword
2694 OptionalNameString_Last
2696 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
2698 error ')' {$$ = AslDoError(); yyclearin;}
2702 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
2703 OptionalResourceType_First
2713 OptionalByteConstExpr
2717 OptionalTranslationType_Last
2718 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
2719 | PARSEOP_DWORDIO '('
2720 error ')' {$$ = AslDoError(); yyclearin;}
2724 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
2725 OptionalResourceType_First
2730 ',' OptionalReadWriteKeyword
2736 OptionalByteConstExpr
2739 OptionalAddressRange
2741 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
2742 | PARSEOP_DWORDMEMORY '('
2743 error ')' {$$ = AslDoError(); yyclearin;}
2747 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
2748 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2749 OptionalResourceType
2759 OptionalByteConstExpr
2761 OptionalNameString_Last
2762 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
2763 | PARSEOP_DWORDSPACE '('
2764 error ')' {$$ = AslDoError(); yyclearin;}
2769 : PARSEOP_ENDDEPENDENTFN '('
2770 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
2771 | PARSEOP_ENDDEPENDENTFN '('
2772 error ')' {$$ = AslDoError(); yyclearin;}
2776 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
2777 OptionalResourceType_First
2787 OptionalQWordConstExpr
2790 OptionalTranslationType_Last
2791 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
2792 | PARSEOP_EXTENDEDIO '('
2793 error ')' {$$ = AslDoError(); yyclearin;}
2797 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
2798 OptionalResourceType_First
2803 ',' OptionalReadWriteKeyword
2809 OptionalQWordConstExpr
2811 OptionalAddressRange
2813 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
2814 | PARSEOP_EXTENDEDMEMORY '('
2815 error ')' {$$ = AslDoError(); yyclearin;}
2819 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
2820 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
2821 OptionalResourceType
2831 OptionalQWordConstExpr
2832 OptionalNameString_Last
2833 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
2834 | PARSEOP_EXTENDEDSPACE '('
2835 error ')' {$$ = AslDoError(); yyclearin;}
2839 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
2840 WordConstExpr // 04: DMA RequestLines
2841 ',' WordConstExpr // 06: DMA Channels
2842 OptionalXferSize // 07: DMA TransferSize
2843 OptionalNameString // 08: DescriptorName
2844 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
2845 | PARSEOP_FIXEDDMA '('
2846 error ')' {$$ = AslDoError(); yyclearin;}
2850 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
2853 OptionalNameString_Last
2854 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
2855 | PARSEOP_FIXEDIO '('
2856 error ')' {$$ = AslDoError(); yyclearin;}
2860 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
2861 InterruptTypeKeyword // 04: InterruptType
2862 ',' InterruptLevel // 06: InterruptLevel
2863 OptionalShareType // 07: SharedType
2864 ',' PinConfigByte // 09: PinConfig
2865 OptionalWordConstExpr // 10: DebounceTimeout
2866 ',' StringData // 12: ResourceSource
2867 OptionalByteConstExpr // 13: ResourceSourceIndex
2868 OptionalResourceType // 14: ResourceType
2869 OptionalNameString // 15: DescriptorName
2870 OptionalBuffer_Last // 16: VendorData
2872 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
2873 | PARSEOP_GPIO_INT '('
2874 error ')' {$$ = AslDoError(); yyclearin;}
2878 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
2879 OptionalShareType_First // 04: SharedType
2880 ',' PinConfigByte // 06: PinConfig
2881 OptionalWordConstExpr // 07: DebounceTimeout
2882 OptionalWordConstExpr // 08: DriveStrength
2883 OptionalIoRestriction // 09: IoRestriction
2884 ',' StringData // 11: ResourceSource
2885 OptionalByteConstExpr // 12: ResourceSourceIndex
2886 OptionalResourceType // 13: ResourceType
2887 OptionalNameString // 14: DescriptorName
2888 OptionalBuffer_Last // 15: VendorData
2890 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
2891 | PARSEOP_GPIO_IO '('
2892 error ')' {$$ = AslDoError(); yyclearin;}
2896 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
2897 WordConstExpr // 04: SlaveAddress
2898 OptionalSlaveMode // 05: SlaveMode
2899 ',' DWordConstExpr // 07: ConnectionSpeed
2900 OptionalAddressingMode // 08: AddressingMode
2901 ',' StringData // 10: ResourceSource
2902 OptionalByteConstExpr // 11: ResourceSourceIndex
2903 OptionalResourceType // 12: ResourceType
2904 OptionalNameString // 13: DescriptorName
2905 OptionalBuffer_Last // 14: VendorData
2906 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
2907 | PARSEOP_I2C_SERIALBUS '('
2908 error ')' {$$ = AslDoError(); yyclearin;}
2912 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
2913 OptionalResourceType_First
2914 ',' InterruptTypeKeyword
2917 OptionalByteConstExpr
2919 OptionalNameString_Last
2921 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
2922 | PARSEOP_INTERRUPT '('
2923 error ')' {$$ = AslDoError(); yyclearin;}
2927 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
2933 OptionalNameString_Last
2934 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2936 error ')' {$$ = AslDoError(); yyclearin;}
2940 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
2941 OptionalNameString_First
2943 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
2944 | PARSEOP_IRQNOFLAGS '('
2945 error ')' {$$ = AslDoError(); yyclearin;}
2949 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
2950 InterruptTypeKeyword
2953 OptionalNameString_Last
2955 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
2957 error ')' {$$ = AslDoError(); yyclearin;}
2961 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
2962 OptionalReadWriteKeyword
2967 OptionalNameString_Last
2968 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2969 | PARSEOP_MEMORY24 '('
2970 error ')' {$$ = AslDoError(); yyclearin;}
2974 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
2975 OptionalReadWriteKeyword
2978 OptionalNameString_Last
2979 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
2980 | PARSEOP_MEMORY32FIXED '('
2981 error ')' {$$ = AslDoError(); yyclearin;}
2985 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
2986 OptionalReadWriteKeyword
2991 OptionalNameString_Last
2992 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
2993 | PARSEOP_MEMORY32 '('
2994 error ')' {$$ = AslDoError(); yyclearin;}
2998 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
2999 OptionalResourceType_First
3009 OptionalByteConstExpr
3013 OptionalTranslationType_Last
3014 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3015 | PARSEOP_QWORDIO '('
3016 error ')' {$$ = AslDoError(); yyclearin;}
3020 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
3021 OptionalResourceType_First
3026 ',' OptionalReadWriteKeyword
3032 OptionalByteConstExpr
3035 OptionalAddressRange
3037 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
3038 | PARSEOP_QWORDMEMORY '('
3039 error ')' {$$ = AslDoError(); yyclearin;}
3043 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
3044 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3045 OptionalResourceType
3055 OptionalByteConstExpr
3057 OptionalNameString_Last
3058 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3059 | PARSEOP_QWORDSPACE '('
3060 error ')' {$$ = AslDoError(); yyclearin;}
3064 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
3070 OptionalNameString_Last
3071 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
3072 | PARSEOP_REGISTER '('
3073 error ')' {$$ = AslDoError(); yyclearin;}
3077 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
3078 WordConstExpr // 04: DeviceSelection
3079 OptionalDevicePolarity // 05: DevicePolarity
3080 OptionalWireMode // 06: WireMode
3081 ',' ByteConstExpr // 08: DataBitLength
3082 OptionalSlaveMode // 09: SlaveMode
3083 ',' DWordConstExpr // 11: ConnectionSpeed
3084 ',' ClockPolarityKeyword // 13: ClockPolarity
3085 ',' ClockPhaseKeyword // 15: ClockPhase
3086 ',' StringData // 17: ResourceSource
3087 OptionalByteConstExpr // 18: ResourceSourceIndex
3088 OptionalResourceType // 19: ResourceType
3089 OptionalNameString // 20: DescriptorName
3090 OptionalBuffer_Last // 21: VendorData
3091 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
3092 | PARSEOP_SPI_SERIALBUS '('
3093 error ')' {$$ = AslDoError(); yyclearin;}
3096 StartDependentFnNoPriTerm
3097 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
3099 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
3100 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
3101 error ')' {$$ = AslDoError(); yyclearin;}
3104 StartDependentFnTerm
3105 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
3109 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
3110 | PARSEOP_STARTDEPENDENTFN '('
3111 error ')' {$$ = AslDoError(); yyclearin;}
3115 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
3116 DWordConstExpr // 04: ConnectionSpeed
3117 OptionalBitsPerByte // 05: BitsPerByte
3118 OptionalStopBits // 06: StopBits
3119 ',' ByteConstExpr // 08: LinesInUse
3120 OptionalEndian // 09: Endianess
3121 OptionalParityType // 10: Parity
3122 OptionalFlowControl // 11: FlowControl
3123 ',' WordConstExpr // 13: Rx BufferSize
3124 ',' WordConstExpr // 15: Tx BufferSize
3125 ',' StringData // 17: ResourceSource
3126 OptionalByteConstExpr // 18: ResourceSourceIndex
3127 OptionalResourceType // 19: ResourceType
3128 OptionalNameString // 20: DescriptorName
3129 OptionalBuffer_Last // 21: VendorData
3130 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
3131 | PARSEOP_UART_SERIALBUS '('
3132 error ')' {$$ = AslDoError(); yyclearin;}
3136 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
3137 OptionalNameString_First
3139 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3140 | PARSEOP_VENDORLONG '('
3141 error ')' {$$ = AslDoError(); yyclearin;}
3145 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
3146 OptionalNameString_First
3148 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
3149 | PARSEOP_VENDORSHORT '('
3150 error ')' {$$ = AslDoError(); yyclearin;}
3154 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
3155 OptionalResourceType_First
3164 OptionalByteConstExpr
3166 OptionalNameString_Last
3167 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
3168 | PARSEOP_WORDBUSNUMBER '('
3169 error ')' {$$ = AslDoError(); yyclearin;}
3173 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
3174 OptionalResourceType_First
3184 OptionalByteConstExpr
3188 OptionalTranslationType_Last
3189 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
3190 | PARSEOP_WORDIO '('
3191 error ')' {$$ = AslDoError(); yyclearin;}
3195 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
3196 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
3197 OptionalResourceType
3207 OptionalByteConstExpr
3209 OptionalNameString_Last
3210 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
3211 | PARSEOP_WORDSPACE '('
3212 error ')' {$$ = AslDoError(); yyclearin;}
3216 /******* Object References ***********************************************/
3218 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
3222 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3223 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
3224 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
3225 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
3229 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
3233 /******* Helper rules ****************************************************/
3236 AmlPackageLengthTerm
3237 : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
3241 : ',' NameString {$$ = $2;}
3242 | ',' error {$$ = AslDoError (); yyclearin;}
3246 : ',' TermArg {$$ = $2;}
3247 | ',' error {$$ = AslDoError (); yyclearin;}
3250 OptionalBusMasterKeyword
3251 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3252 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
3253 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
3256 OptionalAccessAttribTerm
3259 | ',' ByteConstExpr {$$ = $2;}
3260 | ',' AccessAttribKeyword {$$ = $2;}
3264 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3265 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
3266 | ',' ByteConstExpr {$$ = $2;}
3269 OptionalAddressingMode
3271 | ',' AddressingModeKeyword {$$ = $2;}
3274 OptionalAddressRange
3277 | ',' AddressKeyword {$$ = $2;}
3282 | ',' BitsPerByteKeyword {$$ = $2;}
3288 | ',' DataBufferTerm {$$ = $2;}
3291 OptionalByteConstExpr
3294 | ',' ByteConstExpr {$$ = $2;}
3299 | ',' DecodeKeyword {$$ = $2;}
3302 OptionalDevicePolarity
3304 | ',' DevicePolarityKeyword {$$ = $2;}
3307 OptionalDWordConstExpr
3310 | ',' DWordConstExpr {$$ = $2;}
3315 | ',' EndianKeyword {$$ = $2;}
3320 | ',' FlowControlKeyword {$$ = $2;}
3323 OptionalIoRestriction
3325 | ',' IoRestrictionKeyword {$$ = $2;}
3329 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3330 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */
3331 | ',' TermArg {$$ = $2;}
3336 | ',' MaxKeyword {$$ = $2;}
3341 | ',' MemTypeKeyword {$$ = $2;}
3346 | ',' MinKeyword {$$ = $2;}
3352 | ',' NameString {$$ = $2;}
3355 OptionalNameString_Last
3358 | ',' NameString {$$ = $2;}
3361 OptionalNameString_First
3362 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
3363 | NameString {$$ = $1;}
3366 OptionalObjectTypeKeyword
3367 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
3368 | ',' ObjectTypeKeyword {$$ = $2;}
3373 | ',' ParityTypeKeyword {$$ = $2;}
3376 OptionalQWordConstExpr
3379 | ',' QWordConstExpr {$$ = $2;}
3384 | ',' RangeTypeKeyword {$$ = $2;}
3387 OptionalReadWriteKeyword
3388 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3389 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
3390 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
3394 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3395 | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */
3396 | ',' TermArg {$$ = $2;}
3399 OptionalResourceType_First
3400 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3401 | ResourceTypeKeyword {$$ = $1;}
3404 OptionalResourceType
3405 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3406 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
3407 | ',' ResourceTypeKeyword {$$ = $2;}
3411 : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */
3412 | TermArg {$$ = $1;}
3415 OptionalSerializeRuleKeyword
3418 | ',' SerializeRuleKeyword {$$ = $2;}
3423 | ',' SlaveModeKeyword {$$ = $2;}
3429 | ',' ShareTypeKeyword {$$ = $2;}
3432 OptionalShareType_First
3434 | ShareTypeKeyword {$$ = $1;}
3439 | ',' StopBitsKeyword {$$ = $2;}
3445 | ',' StringData {$$ = $2;}
3450 | TermArg {$$ = $1;}
3456 | ',' TypeKeyword {$$ = $2;}
3462 | ',' TypeKeyword {$$ = $2;}
3465 OptionalTranslationType_Last
3468 | ',' TranslationKeyword {$$ = $2;}
3473 | ',' WireModeKeyword {$$ = $2;}
3478 | WordConst {$$ = $1;}
3481 OptionalWordConstExpr
3483 | ',' WordConstExpr {$$ = $2;}
3487 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3488 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
3489 | ',' XferSizeKeyword {$$ = $2;}
3493 /******************************************************************************
3495 * Local support functions
3497 *****************************************************************************/
3500 AslCompilerwrap(void)
3505 /*! [End] no source code translation !*/
3508 AslLocalAllocate (unsigned int Size)
3513 DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size);
3515 Mem = ACPI_ALLOCATE_ZEROED (Size);
3518 AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
3519 Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
3520 Gbl_InputByteCount, Gbl_CurrentColumn,
3521 Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
3533 return (TrCreateLeafNode (PARSEOP_ERRORNODE));
3538 /*******************************************************************************
3540 * FUNCTION: UtGetOpName
3542 * PARAMETERS: ParseOpcode - Parser keyword ID
3544 * RETURN: Pointer to the opcode name
3546 * DESCRIPTION: Get the ascii name of the parse opcode
3548 ******************************************************************************/
3554 #ifdef ASL_YYTNAME_START
3556 * First entries (ASL_YYTNAME_START) in yytname are special reserved names.
3557 * Ignore first 8 characters of the name
3559 return ((char *) yytname
3560 [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8);
3562 return ("[Unknown parser generator]");